home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1995 #2 / Amiga Plus CD - 1995 - No. 2.iso / internet / rfc / rfc1035 < prev    next >
Text File  |  1995-04-11  |  123KB  |  3,078 lines

  1. Network Working Group                                     P. Mockapetris
  2. Request for Comments: 1035                                           ISI
  3.                                                            November 1987
  4. Obsoletes: RFCs 882, 883, 973
  5.  
  6.             DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION
  7.  
  8.  
  9. 1. STATUS OF THIS MEMO
  10.  
  11. This RFC describes the details of the domain system and protocol, and
  12. assumes that the reader is familiar with the concepts discussed in a
  13. companion RFC, "Domain Names - Concepts and Facilities" [RFC-1034].
  14.  
  15. The domain system is a mixture of functions and data types which are an
  16. official protocol and functions and data types which are still
  17. experimental.  Since the domain system is intentionally extensible, new
  18. data types and experimental behavior should always be expected in parts
  19. of the system beyond the official protocol.  The official protocol parts
  20. include standard queries, responses and the Internet class RR data
  21. formats (e.g., host addresses).  Since the previous RFC set, several
  22. definitions have changed, so some previous definitions are obsolete.
  23.  
  24. Experimental or obsolete features are clearly marked in these RFCs, and
  25. such information should be used with caution.
  26.  
  27. The reader is especially cautioned not to depend on the values which
  28. appear in examples to be current or complete, since their purpose is
  29. primarily pedagogical.  Distribution of this memo is unlimited.
  30.  
  31.                            Table of Contents
  32.  
  33.   1. STATUS OF THIS MEMO                                              1
  34.   2. INTRODUCTION                                                     3
  35.       2.1. Overview                                                   3
  36.       2.2. Common configurations                                      4
  37.       2.3. Conventions                                                7
  38.           2.3.1. Preferred name syntax                                7
  39.           2.3.2. Data Transmission Order                              8
  40.           2.3.3. Character Case                                       9
  41.           2.3.4. Size limits                                         10
  42.   3. DOMAIN NAME SPACE AND RR DEFINITIONS                            10
  43.       3.1. Name space definitions                                    10
  44.       3.2. RR definitions                                            11
  45.           3.2.1. Format                                              11
  46.           3.2.2. TYPE values                                         12
  47.           3.2.3. QTYPE values                                        12
  48.           3.2.4. CLASS values                                        13
  49.  
  50.  
  51.  
  52. Mockapetris                                                     [Page 1]
  53.  
  54. RFC 1035        Domain Implementation and Specification    November 1987
  55.  
  56.  
  57.           3.2.5. QCLASS values                                       13
  58.       3.3. Standard RRs                                              13
  59.           3.3.1. CNAME RDATA format                                  14
  60.           3.3.2. HINFO RDATA format                                  14
  61.           3.3.3. MB RDATA format (EXPERIMENTAL)                      14
  62.           3.3.4. MD RDATA format (Obsolete)                          15
  63.           3.3.5. MF RDATA format (Obsolete)                          15
  64.           3.3.6. MG RDATA format (EXPERIMENTAL)                      16
  65.           3.3.7. MINFO RDATA format (EXPERIMENTAL)                   16
  66.           3.3.8. MR RDATA format (EXPERIMENTAL)                      17
  67.           3.3.9. MX RDATA format                                     17
  68.           3.3.10. NULL RDATA format (EXPERIMENTAL)                   17
  69.           3.3.11. NS RDATA format                                    18
  70.           3.3.12. PTR RDATA format                                   18
  71.           3.3.13. SOA RDATA format                                   19
  72.           3.3.14. TXT RDATA format                                   20
  73.       3.4. ARPA Internet specific RRs                                20
  74.           3.4.1. A RDATA format                                      20
  75.           3.4.2. WKS RDATA format                                    21
  76.       3.5. IN-ADDR.ARPA domain                                       22
  77.       3.6. Defining new types, classes, and special namespaces       24
  78.   4. MESSAGES                                                        25
  79.       4.1. Format                                                    25
  80.           4.1.1. Header section format                               26
  81.           4.1.2. Question section format                             28
  82.           4.1.3. Resource record format                              29
  83.           4.1.4. Message compression                                 30
  84.       4.2. Transport                                                 32
  85.           4.2.1. UDP usage                                           32
  86.           4.2.2. TCP usage                                           32
  87.   5. MASTER FILES                                                    33
  88.       5.1. Format                                                    33
  89.       5.2. Use of master files to define zones                       35
  90.       5.3. Master file example                                       36
  91.   6. NAME SERVER IMPLEMENTATION                                      37
  92.       6.1. Architecture                                              37
  93.           6.1.1. Control                                             37
  94.           6.1.2. Database                                            37
  95.           6.1.3. Time                                                39
  96.       6.2. Standard query processing                                 39
  97.       6.3. Zone refresh and reload processing                        39
  98.       6.4. Inverse queries (Optional)                                40
  99.           6.4.1. The contents of inverse queries and responses       40
  100.           6.4.2. Inverse query and response example                  41
  101.           6.4.3. Inverse query processing                            42
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108. Mockapetris                                                     [Page 2]
  109.  
  110. RFC 1035        Domain Implementation and Specification    November 1987
  111.  
  112.  
  113.       6.5. Completion queries and responses                          42
  114.   7. RESOLVER IMPLEMENTATION                                         43
  115.       7.1. Transforming a user request into a query                  43
  116.       7.2. Sending the queries                                       44
  117.       7.3. Processing responses                                      46
  118.       7.4. Using the cache                                           47
  119.   8. MAIL SUPPORT                                                    47
  120.       8.1. Mail exchange binding                                     48
  121.       8.2. Mailbox binding (Experimental)                            48
  122.   9. REFERENCES and BIBLIOGRAPHY                                     50
  123.   Index                                                              54
  124.  
  125. 2. INTRODUCTION
  126.  
  127. 2.1. Overview
  128.  
  129. The goal of domain names is to provide a mechanism for naming resources
  130. in such a way that the names are usable in different hosts, networks,
  131. protocol families, internets, and administrative organizations.
  132.  
  133. From the user's point of view, domain names are useful as arguments to a
  134. local agent, called a resolver, which retrieves information associated
  135. with the domain name.  Thus a user might ask for the host address or
  136. mail information associated with a particular domain name.  To enable
  137. the user to request a particular type of information, an appropriate
  138. query type is passed to the resolver with the domain name.  To the user,
  139. the domain tree is a single information space; the resolver is
  140. responsible for hiding the distribution of data among name servers from
  141. the user.
  142.  
  143. From the resolver's point of view, the database that makes up the domain
  144. space is distributed among various name servers.  Different parts of the
  145. domain space are stored in different name servers, although a particular
  146. data item will be stored redundantly in two or more name servers.  The
  147. resolver starts with knowledge of at least one name server.  When the
  148. resolver processes a user query it asks a known name server for the
  149. information; in return, the resolver either receives the desired
  150. information or a referral to another name server.  Using these
  151. referrals, resolvers learn the identities and contents of other name
  152. servers.  Resolvers are responsible for dealing with the distribution of
  153. the domain space and dealing with the effects of name server failure by
  154. consulting redundant databases in other servers.
  155.  
  156. Name servers manage two kinds of data.  The first kind of data held in
  157. sets called zones; each zone is the complete database for a particular
  158. "pruned" subtree of the domain space.  This data is called
  159. authoritative.  A name server periodically checks to make sure that its
  160. zones are up to date, and if not, obtains a new copy of updated zones
  161.  
  162.  
  163.  
  164. Mockapetris                                                     [Page 3]
  165.  
  166. RFC 1035        Domain Implementation and Specification    November 1987
  167.  
  168.  
  169. from master files stored locally or in another name server.  The second
  170. kind of data is cached data which was acquired by a local resolver.
  171. This data may be incomplete, but improves the performance of the
  172. retrieval process when non-local data is repeatedly accessed.  Cached
  173. data is eventually discarded by a timeout mechanism.
  174.  
  175. This functional structure isolates the problems of user interface,
  176. failure recovery, and distribution in the resolvers and isolates the
  177. database update and refresh problems in the name servers.
  178.  
  179. 2.2. Common configurations
  180.  
  181. A host can participate in the domain name system in a number of ways,
  182. depending on whether the host runs programs that retrieve information
  183. from the domain system, name servers that answer queries from other
  184. hosts, or various combinations of both functions.  The simplest, and
  185. perhaps most typical, configuration is shown below:
  186.  
  187.                  Local Host                        |  Foreign
  188.                                                    |
  189.     +---------+               +----------+         |  +--------+
  190.     |         | user queries  |          |queries  |  |        |
  191.     |  User   |-------------->|          |---------|->|Foreign |
  192.     | Program |               | Resolver |         |  |  Name  |
  193.     |         |<--------------|          |<--------|--| Server |
  194.     |         | user responses|          |responses|  |        |
  195.     +---------+               +----------+         |  +--------+
  196.                                 |     A            |
  197.                 cache additions |     | references |
  198.                                 V     |            |
  199.                               +----------+         |
  200.                               |  cache   |         |
  201.                               +----------+         |
  202.  
  203. User programs interact with the domain name space through resolvers; the
  204. format of user queries and user responses is specific to the host and
  205. its operating system.  User queries will typically be operating system
  206. calls, and the resolver and its cache will be part of the host operating
  207. system.  Less capable hosts may choose to implement the resolver as a
  208. subroutine to be linked in with every program that needs its services.
  209. Resolvers answer user queries with information they acquire via queries
  210. to foreign name servers and the local cache.
  211.  
  212. Note that the resolver may have to make several queries to several
  213. different foreign name servers to answer a particular user query, and
  214. hence the resolution of a user query may involve several network
  215. accesses and an arbitrary amount of time.  The queries to foreign name
  216. servers and the corresponding responses have a standard format described
  217.  
  218.  
  219.  
  220. Mockapetris                                                     [Page 4]
  221.  
  222. RFC 1035        Domain Implementation and Specification    November 1987
  223.  
  224.  
  225. in this memo, and may be datagrams.
  226.  
  227. Depending on its capabilities, a name server could be a stand alone
  228. program on a dedicated machine or a process or processes on a large
  229. timeshared host.  A simple configuration might be:
  230.  
  231.                  Local Host                        |  Foreign
  232.                                                    |
  233.       +---------+                                  |
  234.      /         /|                                  |
  235.     +---------+ |             +----------+         |  +--------+
  236.     |         | |             |          |responses|  |        |
  237.     |         | |             |   Name   |---------|->|Foreign |
  238.     |  Master |-------------->|  Server  |         |  |Resolver|
  239.     |  files  | |             |          |<--------|--|        |
  240.     |         |/              |          | queries |  +--------+
  241.     +---------+               +----------+         |
  242.  
  243. Here a primary name server acquires information about one or more zones
  244. by reading master files from its local file system, and answers queries
  245. about those zones that arrive from foreign resolvers.
  246.  
  247. The DNS requires that all zones be redundantly supported by more than
  248. one name server.  Designated secondary servers can acquire zones and
  249. check for updates from the primary server using the zone transfer
  250. protocol of the DNS.  This configuration is shown below:
  251.  
  252.                  Local Host                        |  Foreign
  253.                                                    |
  254.       +---------+                                  |
  255.      /         /|                                  |
  256.     +---------+ |             +----------+         |  +--------+
  257.     |         | |             |          |responses|  |        |
  258.     |         | |             |   Name   |---------|->|Foreign |
  259.     |  Master |-------------->|  Server  |         |  |Resolver|
  260.     |  files  | |             |          |<--------|--|        |
  261.     |         |/              |          | queries |  +--------+
  262.     +---------+               +----------+         |
  263.                                 A     |maintenance |  +--------+
  264.                                 |     +------------|->|        |
  265.                                 |      queries     |  |Foreign |
  266.                                 |                  |  |  Name  |
  267.                                 +------------------|--| Server |
  268.                              maintenance responses |  +--------+
  269.  
  270. In this configuration, the name server periodically establishes a
  271. virtual circuit to a foreign name server to acquire a copy of a zone or
  272. to check that an existing copy has not changed.  The messages sent for
  273.  
  274.  
  275.  
  276. Mockapetris                                                     [Page 5]
  277.  
  278. RFC 1035        Domain Implementation and Specification    November 1987
  279.  
  280.  
  281. these maintenance activities follow the same form as queries and
  282. responses, but the message sequences are somewhat different.
  283.  
  284. The information flow in a host that supports all aspects of the domain
  285. name system is shown below:
  286.  
  287.                  Local Host                        |  Foreign
  288.                                                    |
  289.     +---------+               +----------+         |  +--------+
  290.     |         | user queries  |          |queries  |  |        |
  291.     |  User   |-------------->|          |---------|->|Foreign |
  292.     | Program |               | Resolver |         |  |  Name  |
  293.     |         |<--------------|          |<--------|--| Server |
  294.     |         | user responses|          |responses|  |        |
  295.     +---------+               +----------+         |  +--------+
  296.                                 |     A            |
  297.                 cache additions |     | references |
  298.                                 V     |            |
  299.                               +----------+         |
  300.                               |  Shared  |         |
  301.                               | database |         |
  302.                               +----------+         |
  303.                                 A     |            |
  304.       +---------+     refreshes |     | references |
  305.      /         /|               |     V            |
  306.     +---------+ |             +----------+         |  +--------+
  307.     |         | |             |          |responses|  |        |
  308.     |         | |             |   Name   |---------|->|Foreign |
  309.     |  Master |-------------->|  Server  |         |  |Resolver|
  310.     |  files  | |             |          |<--------|--|        |
  311.     |         |/              |          | queries |  +--------+
  312.     +---------+               +----------+         |
  313.                                 A     |maintenance |  +--------+
  314.                                 |     +------------|->|        |
  315.                                 |      queries     |  |Foreign |
  316.                                 |                  |  |  Name  |
  317.                                 +------------------|--| Server |
  318.                              maintenance responses |  +--------+
  319.  
  320. The shared database holds domain space data for the local name server
  321. and resolver.  The contents of the shared database will typically be a
  322. mixture of authoritative data maintained by the periodic refresh
  323. operations of the name server and cached data from previous resolver
  324. requests.  The structure of the domain data and the necessity for
  325. synchronization between name servers and resolvers imply the general
  326. characteristics of this database, but the actual format is up to the
  327. local implementor.
  328.  
  329.  
  330.  
  331.  
  332. Mockapetris                                                     [Page 6]
  333.  
  334. RFC 1035        Domain Implementation and Specification    November 1987
  335.  
  336.  
  337. Information flow can also be tailored so that a group of hosts act
  338. together to optimize activities.  Sometimes this is done to offload less
  339. capable hosts so that they do not have to implement a full resolver.
  340. This can be appropriate for PCs or hosts which want to minimize the
  341. amount of new network code which is required.  This scheme can also
  342. allow a group of hosts can share a small number of caches rather than
  343. maintaining a large number of separate caches, on the premise that the
  344. centralized caches will have a higher hit ratio.  In either case,
  345. resolvers are replaced with stub resolvers which act as front ends to
  346. resolvers located in a recursive server in one or more name servers
  347. known to perform that service:
  348.  
  349.                    Local Hosts                     |  Foreign
  350.                                                    |
  351.     +---------+                                    |
  352.     |         | responses                          |
  353.     | Stub    |<--------------------+              |
  354.     | Resolver|                     |              |
  355.     |         |----------------+    |              |
  356.     +---------+ recursive      |    |              |
  357.                 queries        |    |              |
  358.                                V    |              |
  359.     +---------+ recursive     +----------+         |  +--------+
  360.     |         | queries       |          |queries  |  |        |
  361.     | Stub    |-------------->| Recursive|---------|->|Foreign |
  362.     | Resolver|               | Server   |         |  |  Name  |
  363.     |         |<--------------|          |<--------|--| Server |
  364.     +---------+ responses     |          |responses|  |        |
  365.                               +----------+         |  +--------+
  366.                               |  Central |         |
  367.                               |   cache  |         |
  368.                               +----------+         |
  369.  
  370. In any case, note that domain components are always replicated for
  371. reliability whenever possible.
  372.  
  373. 2.3. Conventions
  374.  
  375. The domain system has several conventions dealing with low-level, but
  376. fundamental, issues.  While the implementor is free to violate these
  377. conventions WITHIN HIS OWN SYSTEM, he must observe these conventions in
  378. ALL behavior observed from other hosts.
  379.  
  380. 2.3.1. Preferred name syntax
  381.  
  382. The DNS specifications attempt to be as general as possible in the rules
  383. for constructing domain names.  The idea is that the name of any
  384. existing object can be expressed as a domain name with minimal changes.
  385.  
  386.  
  387.  
  388. Mockapetris                                                     [Page 7]
  389.  
  390. RFC 1035        Domain Implementation and Specification    November 1987
  391.  
  392.  
  393. However, when assigning a domain name for an object, the prudent user
  394. will select a name which satisfies both the rules of the domain system
  395. and any existing rules for the object, whether these rules are published
  396. or implied by existing programs.
  397.  
  398. For example, when naming a mail domain, the user should satisfy both the
  399. rules of this memo and those in RFC-822.  When creating a new host name,
  400. the old rules for HOSTS.TXT should be followed.  This avoids problems
  401. when old software is converted to use domain names.
  402.  
  403. The following syntax will result in fewer problems with many
  404.  
  405. applications that use domain names (e.g., mail, TELNET).
  406.  
  407. <domain> ::= <subdomain> | " "
  408.  
  409. <subdomain> ::= <label> | <subdomain> "." <label>
  410.  
  411. <label> ::= <letter> [ [ <ldh-str> ] <let-dig> ]
  412.  
  413. <ldh-str> ::= <let-dig-hyp> | <let-dig-hyp> <ldh-str>
  414.  
  415. <let-dig-hyp> ::= <let-dig> | "-"
  416.  
  417. <let-dig> ::= <letter> | <digit>
  418.  
  419. <letter> ::= any one of the 52 alphabetic characters A through Z in
  420. upper case and a through z in lower case
  421.  
  422. <digit> ::= any one of the ten digits 0 through 9
  423.  
  424. Note that while upper and lower case letters are allowed in domain
  425. names, no significance is attached to the case.  That is, two names with
  426. the same spelling but different case are to be treated as if identical.
  427.  
  428. The labels must follow the rules for ARPANET host names.  They must
  429. start with a letter, end with a letter or digit, and have as interior
  430. characters only letters, digits, and hyphen.  There are also some
  431. restrictions on the length.  Labels must be 63 characters or less.
  432.  
  433. For example, the following strings identify hosts in the Internet:
  434.  
  435. A.ISI.EDU XX.LCS.MIT.EDU SRI-NIC.ARPA
  436.  
  437. 2.3.2. Data Transmission Order
  438.  
  439. The order of transmission of the header and data described in this
  440. document is resolved to the octet level.  Whenever a diagram shows a
  441.  
  442.  
  443.  
  444. Mockapetris                                                     [Page 8]
  445.  
  446. RFC 1035        Domain Implementation and Specification    November 1987
  447.  
  448.  
  449. group of octets, the order of transmission of those octets is the normal
  450. order in which they are read in English.  For example, in the following
  451. diagram, the octets are transmitted in the order they are numbered.
  452.  
  453.      0                   1
  454.      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
  455.     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  456.     |       1       |       2       |
  457.     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  458.     |       3       |       4       |
  459.     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  460.     |       5       |       6       |
  461.     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  462.  
  463. Whenever an octet represents a numeric quantity, the left most bit in
  464. the diagram is the high order or most significant bit.  That is, the bit
  465. labeled 0 is the most significant bit.  For example, the following
  466. diagram represents the value 170 (decimal).
  467.  
  468.      0 1 2 3 4 5 6 7
  469.     +-+-+-+-+-+-+-+-+
  470.     |1 0 1 0 1 0 1 0|
  471.     +-+-+-+-+-+-+-+-+
  472.  
  473. Similarly, whenever a multi-octet field represents a numeric quantity
  474. the left most bit of the whole field is the most significant bit.  When
  475. a multi-octet quantity is transmitted the most significant octet is
  476. transmitted first.
  477.  
  478. 2.3.3. Character Case
  479.  
  480. For all parts of the DNS that are part of the official protocol, all
  481. comparisons between character strings (e.g., labels, domain names, etc.)
  482. are done in a case-insensitive manner.  At present, this rule is in
  483. force throughout the domain system without exception.  However, future
  484. additions beyond current usage may need to use the full binary octet
  485. capabilities in names, so attempts to store domain names in 7-bit ASCII
  486. or use of special bytes to terminate labels, etc., should be avoided.
  487.  
  488. When data enters the domain system, its original case should be
  489. preserved whenever possible.  In certain circumstances this cannot be
  490. done.  For example, if two RRs are stored in a database, one at x.y and
  491. one at X.Y, they are actually stored at the same place in the database,
  492. and hence only one casing would be preserved.  The basic rule is that
  493. case can be discarded only when data is used to define structure in a
  494. database, and two names are identical when compared in a case
  495. insensitive manner.
  496.  
  497.  
  498.  
  499.  
  500. Mockapetris                                                     [Page 9]
  501.  
  502. RFC 1035        Domain Implementation and Specification    November 1987
  503.  
  504.  
  505. Loss of case sensitive data must be minimized.  Thus while data for x.y
  506. and X.Y may both be stored under a single location x.y or X.Y, data for
  507. a.x and B.X would never be stored under A.x, A.X, b.x, or b.X.  In
  508. general, this preserves the case of the first label of a domain name,
  509. but forces standardization of interior node labels.
  510.  
  511. Systems administrators who enter data into the domain database should
  512. take care to represent the data they supply to the domain system in a
  513. case-consistent manner if their system is case-sensitive.  The data
  514. distribution system in the domain system will ensure that consistent
  515. representations are preserved.
  516.  
  517. 2.3.4. Size limits
  518.  
  519. Various objects and parameters in the DNS have size limits.  They are
  520. listed below.  Some could be easily changed, others are more
  521. fundamental.
  522.  
  523. labels          63 octets or less
  524.  
  525. names           255 octets or less
  526.  
  527. TTL             positive values of a signed 32 bit number.
  528.  
  529. UDP messages    512 octets or less
  530.  
  531. 3. DOMAIN NAME SPACE AND RR DEFINITIONS
  532.  
  533. 3.1. Name space definitions
  534.  
  535. Domain names in messages are expressed in terms of a sequence of labels.
  536. Each label is represented as a one octet length field followed by that
  537. number of octets.  Since every domain name ends with the null label of
  538. the root, a domain name is terminated by a length byte of zero.  The
  539. high order two bits of every length octet must be zero, and the
  540. remaining six bits of the length field limit the label to 63 octets or
  541. less.
  542.  
  543. To simplify implementations, the total length of a domain name (i.e.,
  544. label octets and label length octets) is restricted to 255 octets or
  545. less.
  546.  
  547. Although labels can contain any 8 bit values in octets that make up a
  548. label, it is strongly recommended that labels follow the preferred
  549. syntax described elsewhere in this memo, which is compatible with
  550. existing host naming conventions.  Name servers and resolvers must
  551. compare labels in a case-insensitive manner (i.e., A=a), assuming ASCII
  552. with zero parity.  Non-alphabetic codes must match exactly.
  553.  
  554.  
  555.  
  556. Mockapetris                                                    [Page 10]
  557.  
  558. RFC 1035        Domain Implementation and Specification    November 1987
  559.  
  560.  
  561. 3.2. RR definitions
  562.  
  563. 3.2.1. Format
  564.  
  565. All RRs have the same top level format shown below:
  566.  
  567.                                     1  1  1  1  1  1
  568.       0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
  569.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  570.     |                                               |
  571.     /                                               /
  572.     /                      NAME                     /
  573.     |                                               |
  574.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  575.     |                      TYPE                     |
  576.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  577.     |                     CLASS                     |
  578.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  579.     |                      TTL                      |
  580.     |                                               |
  581.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  582.     |                   RDLENGTH                    |
  583.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--|
  584.     /                     RDATA                     /
  585.     /                                               /
  586.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  587.  
  588.  
  589. where:
  590.  
  591. NAME            an owner name, i.e., the name of the node to which this
  592.                 resource record pertains.
  593.  
  594. TYPE            two octets containing one of the RR TYPE codes.
  595.  
  596. CLASS           two octets containing one of the RR CLASS codes.
  597.  
  598. TTL             a 32 bit signed integer that specifies the time interval
  599.                 that the resource record may be cached before the source
  600.                 of the information should again be consulted.  Zero
  601.                 values are interpreted to mean that the RR can only be
  602.                 used for the transaction in progress, and should not be
  603.                 cached.  For example, SOA records are always distributed
  604.                 with a zero TTL to prohibit caching.  Zero values can
  605.                 also be used for extremely volatile data.
  606.  
  607. RDLENGTH        an unsigned 16 bit integer that specifies the length in
  608.                 octets of the RDATA field.
  609.  
  610.  
  611.  
  612. Mockapetris                                                    [Page 11]
  613.  
  614. RFC 1035        Domain Implementation and Specification    November 1987
  615.  
  616.  
  617. RDATA           a variable length string of octets that describes the
  618.                 resource.  The format of this information varies
  619.                 according to the TYPE and CLASS of the resource record.
  620.  
  621. 3.2.2. TYPE values
  622.  
  623. TYPE fields are used in resource records.  Note that these types are a
  624. subset of QTYPEs.
  625.  
  626. TYPE            value and meaning
  627.  
  628. A               1 a host address
  629.  
  630. NS              2 an authoritative name server
  631.  
  632. MD              3 a mail destination (Obsolete - use MX)
  633.  
  634. MF              4 a mail forwarder (Obsolete - use MX)
  635.  
  636. CNAME           5 the canonical name for an alias
  637.  
  638. SOA             6 marks the start of a zone of authority
  639.  
  640. MB              7 a mailbox domain name (EXPERIMENTAL)
  641.  
  642. MG              8 a mail group member (EXPERIMENTAL)
  643.  
  644. MR              9 a mail rename domain name (EXPERIMENTAL)
  645.  
  646. NULL            10 a null RR (EXPERIMENTAL)
  647.  
  648. WKS             11 a well known service description
  649.  
  650. PTR             12 a domain name pointer
  651.  
  652. HINFO           13 host information
  653.  
  654. MINFO           14 mailbox or mail list information
  655.  
  656. MX              15 mail exchange
  657.  
  658. TXT             16 text strings
  659.  
  660. 3.2.3. QTYPE values
  661.  
  662. QTYPE fields appear in the question part of a query.  QTYPES are a
  663. superset of TYPEs, hence all TYPEs are valid QTYPEs.  In addition, the
  664. following QTYPEs are defined:
  665.  
  666.  
  667.  
  668. Mockapetris                                                    [Page 12]
  669.  
  670. RFC 1035        Domain Implementation and Specification    November 1987
  671.  
  672.  
  673. AXFR            252 A request for a transfer of an entire zone
  674.  
  675. MAILB           253 A request for mailbox-related records (MB, MG or MR)
  676.  
  677. MAILA           254 A request for mail agent RRs (Obsolete - see MX)
  678.  
  679. *               255 A request for all records
  680.  
  681. 3.2.4. CLASS values
  682.  
  683. CLASS fields appear in resource records.  The following CLASS mnemonics
  684. and values are defined:
  685.  
  686. IN              1 the Internet
  687.  
  688. CS              2 the CSNET class (Obsolete - used only for examples in
  689.                 some obsolete RFCs)
  690.  
  691. CH              3 the CHAOS class
  692.  
  693. HS              4 Hesiod [Dyer 87]
  694.  
  695. 3.2.5. QCLASS values
  696.  
  697. QCLASS fields appear in the question section of a query.  QCLASS values
  698. are a superset of CLASS values; every CLASS is a valid QCLASS.  In
  699. addition to CLASS values, the following QCLASSes are defined:
  700.  
  701. *               255 any class
  702.  
  703. 3.3. Standard RRs
  704.  
  705. The following RR definitions are expected to occur, at least
  706. potentially, in all classes.  In particular, NS, SOA, CNAME, and PTR
  707. will be used in all classes, and have the same format in all classes.
  708. Because their RDATA format is known, all domain names in the RDATA
  709. section of these RRs may be compressed.
  710.  
  711. <domain-name> is a domain name represented as a series of labels, and
  712. terminated by a label with zero length.  <character-string> is a single
  713. length octet followed by that number of characters.  <character-string>
  714. is treated as binary information, and can be up to 256 characters in
  715. length (including the length octet).
  716.  
  717.  
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724. Mockapetris                                                    [Page 13]
  725.  
  726. RFC 1035        Domain Implementation and Specification    November 1987
  727.  
  728.  
  729. 3.3.1. CNAME RDATA format
  730.  
  731.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  732.     /                     CNAME                     /
  733.     /                                               /
  734.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  735.  
  736. where:
  737.  
  738. CNAME           A <domain-name> which specifies the canonical or primary
  739.                 name for the owner.  The owner name is an alias.
  740.  
  741. CNAME RRs cause no additional section processing, but name servers may
  742. choose to restart the query at the canonical name in certain cases.  See
  743. the description of name server logic in [RFC-1034] for details.
  744.  
  745. 3.3.2. HINFO RDATA format
  746.  
  747.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  748.     /                      CPU                      /
  749.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  750.     /                       OS                      /
  751.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  752.  
  753. where:
  754.  
  755. CPU             A <character-string> which specifies the CPU type.
  756.  
  757. OS              A <character-string> which specifies the operating
  758.                 system type.
  759.  
  760. Standard values for CPU and OS can be found in [RFC-1010].
  761.  
  762. HINFO records are used to acquire general information about a host.  The
  763. main use is for protocols such as FTP that can use special procedures
  764. when talking between machines or operating systems of the same type.
  765.  
  766. 3.3.3. MB RDATA format (EXPERIMENTAL)
  767.  
  768.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  769.     /                   MADNAME                     /
  770.     /                                               /
  771.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  772.  
  773. where:
  774.  
  775. MADNAME         A <domain-name> which specifies a host which has the
  776.                 specified mailbox.
  777.  
  778.  
  779.  
  780. Mockapetris                                                    [Page 14]
  781.  
  782. RFC 1035        Domain Implementation and Specification    November 1987
  783.  
  784.  
  785. MB records cause additional section processing which looks up an A type
  786. RRs corresponding to MADNAME.
  787.  
  788. 3.3.4. MD RDATA format (Obsolete)
  789.  
  790.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  791.     /                   MADNAME                     /
  792.     /                                               /
  793.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  794.  
  795. where:
  796.  
  797. MADNAME         A <domain-name> which specifies a host which has a mail
  798.                 agent for the domain which should be able to deliver
  799.                 mail for the domain.
  800.  
  801. MD records cause additional section processing which looks up an A type
  802. record corresponding to MADNAME.
  803.  
  804. MD is obsolete.  See the definition of MX and [RFC-974] for details of
  805. the new scheme.  The recommended policy for dealing with MD RRs found in
  806. a master file is to reject them, or to convert them to MX RRs with a
  807. preference of 0.
  808.  
  809. 3.3.5. MF RDATA format (Obsolete)
  810.  
  811.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  812.     /                   MADNAME                     /
  813.     /                                               /
  814.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  815.  
  816. where:
  817.  
  818. MADNAME         A <domain-name> which specifies a host which has a mail
  819.                 agent for the domain which will accept mail for
  820.                 forwarding to the domain.
  821.  
  822. MF records cause additional section processing which looks up an A type
  823. record corresponding to MADNAME.
  824.  
  825. MF is obsolete.  See the definition of MX and [RFC-974] for details ofw
  826. the new scheme.  The recommended policy for dealing with MD RRs found in
  827. a master file is to reject them, or to convert them to MX RRs with a
  828. preference of 10.
  829.  
  830.  
  831.  
  832.  
  833.  
  834.  
  835.  
  836. Mockapetris                                                    [Page 15]
  837.  
  838. RFC 1035        Domain Implementation and Specification    November 1987
  839.  
  840.  
  841. 3.3.6. MG RDATA format (EXPERIMENTAL)
  842.  
  843.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  844.     /                   MGMNAME                     /
  845.     /                                               /
  846.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  847.  
  848. where:
  849.  
  850. MGMNAME         A <domain-name> which specifies a mailbox which is a
  851.                 member of the mail group specified by the domain name.
  852.  
  853. MG records cause no additional section processing.
  854.  
  855. 3.3.7. MINFO RDATA format (EXPERIMENTAL)
  856.  
  857.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  858.     /                    RMAILBX                    /
  859.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  860.     /                    EMAILBX                    /
  861.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  862.  
  863. where:
  864.  
  865. RMAILBX         A <domain-name> which specifies a mailbox which is
  866.                 responsible for the mailing list or mailbox.  If this
  867.                 domain name names the root, the owner of the MINFO RR is
  868.                 responsible for itself.  Note that many existing mailing
  869.                 lists use a mailbox X-request for the RMAILBX field of
  870.                 mailing list X, e.g., Msgroup-request for Msgroup.  This
  871.                 field provides a more general mechanism.
  872.  
  873.  
  874. EMAILBX         A <domain-name> which specifies a mailbox which is to
  875.                 receive error messages related to the mailing list or
  876.                 mailbox specified by the owner of the MINFO RR (similar
  877.                 to the ERRORS-TO: field which has been proposed).  If
  878.                 this domain name names the root, errors should be
  879.                 returned to the sender of the message.
  880.  
  881. MINFO records cause no additional section processing.  Although these
  882. records can be associated with a simple mailbox, they are usually used
  883. with a mailing list.
  884.  
  885.  
  886.  
  887.  
  888.  
  889.  
  890.  
  891.  
  892. Mockapetris                                                    [Page 16]
  893.  
  894. RFC 1035        Domain Implementation and Specification    November 1987
  895.  
  896.  
  897. 3.3.8. MR RDATA format (EXPERIMENTAL)
  898.  
  899.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  900.     /                   NEWNAME                     /
  901.     /                                               /
  902.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  903.  
  904. where:
  905.  
  906. NEWNAME         A <domain-name> which specifies a mailbox which is the
  907.                 proper rename of the specified mailbox.
  908.  
  909. MR records cause no additional section processing.  The main use for MR
  910. is as a forwarding entry for a user who has moved to a different
  911. mailbox.
  912.  
  913. 3.3.9. MX RDATA format
  914.  
  915.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  916.     |                  PREFERENCE                   |
  917.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  918.     /                   EXCHANGE                    /
  919.     /                                               /
  920.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  921.  
  922. where:
  923.  
  924. PREFERENCE      A 16 bit integer which specifies the preference given to
  925.                 this RR among others at the same owner.  Lower values
  926.                 are preferred.
  927.  
  928. EXCHANGE        A <domain-name> which specifies a host willing to act as
  929.                 a mail exchange for the owner name.
  930.  
  931. MX records cause type A additional section processing for the host
  932. specified by EXCHANGE.  The use of MX RRs is explained in detail in
  933. [RFC-974].
  934.  
  935. 3.3.10. NULL RDATA format (EXPERIMENTAL)
  936.  
  937.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  938.     /                  <anything>                   /
  939.     /                                               /
  940.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  941.  
  942. Anything at all may be in the RDATA field so long as it is 65535 octets
  943. or less.
  944.  
  945.  
  946.  
  947.  
  948. Mockapetris                                                    [Page 17]
  949.  
  950. RFC 1035        Domain Implementation and Specification    November 1987
  951.  
  952.  
  953. NULL records cause no additional section processing.  NULL RRs are not
  954. allowed in master files.  NULLs are used as placeholders in some
  955. experimental extensions of the DNS.
  956.  
  957. 3.3.11. NS RDATA format
  958.  
  959.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  960.     /                   NSDNAME                     /
  961.     /                                               /
  962.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  963.  
  964. where:
  965.  
  966. NSDNAME         A <domain-name> which specifies a host which should be
  967.                 authoritative for the specified class and domain.
  968.  
  969. NS records cause both the usual additional section processing to locate
  970. a type A record, and, when used in a referral, a special search of the
  971. zone in which they reside for glue information.
  972.  
  973. The NS RR states that the named host should be expected to have a zone
  974. starting at owner name of the specified class.  Note that the class may
  975. not indicate the protocol family which should be used to communicate
  976. with the host, although it is typically a strong hint.  For example,
  977. hosts which are name servers for either Internet (IN) or Hesiod (HS)
  978. class information are normally queried using IN class protocols.
  979.  
  980. 3.3.12. PTR RDATA format
  981.  
  982.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  983.     /                   PTRDNAME                    /
  984.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  985.  
  986. where:
  987.  
  988. PTRDNAME        A <domain-name> which points to some location in the
  989.                 domain name space.
  990.  
  991. PTR records cause no additional section processing.  These RRs are used
  992. in special domains to point to some other location in the domain space.
  993. These records are simple data, and don't imply any special processing
  994. similar to that performed by CNAME, which identifies aliases.  See the
  995. description of the IN-ADDR.ARPA domain for an example.
  996.  
  997.  
  998.  
  999.  
  1000.  
  1001.  
  1002.  
  1003.  
  1004. Mockapetris                                                    [Page 18]
  1005.  
  1006. RFC 1035        Domain Implementation and Specification    November 1987
  1007.  
  1008.  
  1009. 3.3.13. SOA RDATA format
  1010.  
  1011.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1012.     /                     MNAME                     /
  1013.     /                                               /
  1014.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1015.     /                     RNAME                     /
  1016.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1017.     |                    SERIAL                     |
  1018.     |                                               |
  1019.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1020.     |                    REFRESH                    |
  1021.     |                                               |
  1022.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1023.     |                     RETRY                     |
  1024.     |                                               |
  1025.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1026.     |                    EXPIRE                     |
  1027.     |                                               |
  1028.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1029.     |                    MINIMUM                    |
  1030.     |                                               |
  1031.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1032.  
  1033. where:
  1034.  
  1035. MNAME           The <domain-name> of the name server that was the
  1036.                 original or primary source of data for this zone.
  1037.  
  1038. RNAME           A <domain-name> which specifies the mailbox of the
  1039.                 person responsible for this zone.
  1040.  
  1041. SERIAL          The unsigned 32 bit version number of the original copy
  1042.                 of the zone.  Zone transfers preserve this value.  This
  1043.                 value wraps and should be compared using sequence space
  1044.                 arithmetic.
  1045.  
  1046. REFRESH         A 32 bit time interval before the zone should be
  1047.                 refreshed.
  1048.  
  1049. RETRY           A 32 bit time interval that should elapse before a
  1050.                 failed refresh should be retried.
  1051.  
  1052. EXPIRE          A 32 bit time value that specifies the upper limit on
  1053.                 the time interval that can elapse before the zone is no
  1054.                 longer authoritative.
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060. Mockapetris                                                    [Page 19]
  1061.  
  1062. RFC 1035        Domain Implementation and Specification    November 1987
  1063.  
  1064.  
  1065. MINIMUM         The unsigned 32 bit minimum TTL field that should be
  1066.                 exported with any RR from this zone.
  1067.  
  1068. SOA records cause no additional section processing.
  1069.  
  1070. All times are in units of seconds.
  1071.  
  1072. Most of these fields are pertinent only for name server maintenance
  1073. operations.  However, MINIMUM is used in all query operations that
  1074. retrieve RRs from a zone.  Whenever a RR is sent in a response to a
  1075. query, the TTL field is set to the maximum of the TTL field from the RR
  1076. and the MINIMUM field in the appropriate SOA.  Thus MINIMUM is a lower
  1077. bound on the TTL field for all RRs in a zone.  Note that this use of
  1078. MINIMUM should occur when the RRs are copied into the response and not
  1079. when the zone is loaded from a master file or via a zone transfer.  The
  1080. reason for this provison is to allow future dynamic update facilities to
  1081. change the SOA RR with known semantics.
  1082.  
  1083.  
  1084. 3.3.14. TXT RDATA format
  1085.  
  1086.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1087.     /                   TXT-DATA                    /
  1088.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1089.  
  1090. where:
  1091.  
  1092. TXT-DATA        One or more <character-string>s.
  1093.  
  1094. TXT RRs are used to hold descriptive text.  The semantics of the text
  1095. depends on the domain where it is found.
  1096.  
  1097. 3.4. Internet specific RRs
  1098.  
  1099. 3.4.1. A RDATA format
  1100.  
  1101.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1102.     |                    ADDRESS                    |
  1103.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1104.  
  1105. where:
  1106.  
  1107. ADDRESS         A 32 bit Internet address.
  1108.  
  1109. Hosts that have multiple Internet addresses will have multiple A
  1110. records.
  1111.  
  1112.  
  1113.  
  1114.  
  1115.  
  1116. Mockapetris                                                    [Page 20]
  1117.  
  1118. RFC 1035        Domain Implementation and Specification    November 1987
  1119.  
  1120.  
  1121. A records cause no additional section processing.  The RDATA section of
  1122. an A line in a master file is an Internet address expressed as four
  1123. decimal numbers separated by dots without any imbedded spaces (e.g.,
  1124. "10.2.0.52" or "192.0.5.6").
  1125.  
  1126. 3.4.2. WKS RDATA format
  1127.  
  1128.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1129.     |                    ADDRESS                    |
  1130.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1131.     |       PROTOCOL        |                       |
  1132.     +--+--+--+--+--+--+--+--+                       |
  1133.     |                                               |
  1134.     /                   <BIT MAP>                   /
  1135.     /                                               /
  1136.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1137.  
  1138. where:
  1139.  
  1140. ADDRESS         An 32 bit Internet address
  1141.  
  1142. PROTOCOL        An 8 bit IP protocol number
  1143.  
  1144. <BIT MAP>       A variable length bit map.  The bit map must be a
  1145.                 multiple of 8 bits long.
  1146.  
  1147. The WKS record is used to describe the well known services supported by
  1148. a particular protocol on a particular internet address.  The PROTOCOL
  1149. field specifies an IP protocol number, and the bit map has one bit per
  1150. port of the specified protocol.  The first bit corresponds to port 0,
  1151. the second to port 1, etc.  If the bit map does not include a bit for a
  1152. protocol of interest, that bit is assumed zero.  The appropriate values
  1153. and mnemonics for ports and protocols are specified in [RFC-1010].
  1154.  
  1155. For example, if PROTOCOL=TCP (6), the 26th bit corresponds to TCP port
  1156. 25 (SMTP).  If this bit is set, a SMTP server should be listening on TCP
  1157. port 25; if zero, SMTP service is not supported on the specified
  1158. address.
  1159.  
  1160. The purpose of WKS RRs is to provide availability information for
  1161. servers for TCP and UDP.  If a server supports both TCP and UDP, or has
  1162. multiple Internet addresses, then multiple WKS RRs are used.
  1163.  
  1164. WKS RRs cause no additional section processing.
  1165.  
  1166. In master files, both ports and protocols are expressed using mnemonics
  1167. or decimal numbers.
  1168.  
  1169.  
  1170.  
  1171.  
  1172. Mockapetris                                                    [Page 21]
  1173.  
  1174. RFC 1035        Domain Implementation and Specification    November 1987
  1175.  
  1176.  
  1177. 3.5. IN-ADDR.ARPA domain
  1178.  
  1179. The Internet uses a special domain to support gateway location and
  1180. Internet address to host mapping.  Other classes may employ a similar
  1181. strategy in other domains.  The intent of this domain is to provide a
  1182. guaranteed method to perform host address to host name mapping, and to
  1183. facilitate queries to locate all gateways on a particular network in the
  1184. Internet.
  1185.  
  1186. Note that both of these services are similar to functions that could be
  1187. performed by inverse queries; the difference is that this part of the
  1188. domain name space is structured according to address, and hence can
  1189. guarantee that the appropriate data can be located without an exhaustive
  1190. search of the domain space.
  1191.  
  1192. The domain begins at IN-ADDR.ARPA and has a substructure which follows
  1193. the Internet addressing structure.
  1194.  
  1195. Domain names in the IN-ADDR.ARPA domain are defined to have up to four
  1196. labels in addition to the IN-ADDR.ARPA suffix.  Each label represents
  1197. one octet of an Internet address, and is expressed as a character string
  1198. for a decimal value in the range 0-255 (with leading zeros omitted
  1199. except in the case of a zero octet which is represented by a single
  1200. zero).
  1201.  
  1202. Host addresses are represented by domain names that have all four labels
  1203. specified.  Thus data for Internet address 10.2.0.52 is located at
  1204. domain name 52.0.2.10.IN-ADDR.ARPA.  The reversal, though awkward to
  1205. read, allows zones to be delegated which are exactly one network of
  1206. address space.  For example, 10.IN-ADDR.ARPA can be a zone containing
  1207. data for the ARPANET, while 26.IN-ADDR.ARPA can be a separate zone for
  1208. MILNET.  Address nodes are used to hold pointers to primary host names
  1209. in the normal domain space.
  1210.  
  1211. Network numbers correspond to some non-terminal nodes at various depths
  1212. in the IN-ADDR.ARPA domain, since Internet network numbers are either 1,
  1213. 2, or 3 octets.  Network nodes are used to hold pointers to the primary
  1214. host names of gateways attached to that network.  Since a gateway is, by
  1215. definition, on more than one network, it will typically have two or more
  1216. network nodes which point at it.  Gateways will also have host level
  1217. pointers at their fully qualified addresses.
  1218.  
  1219. Both the gateway pointers at network nodes and the normal host pointers
  1220. at full address nodes use the PTR RR to point back to the primary domain
  1221. names of the corresponding hosts.
  1222.  
  1223. For example, the IN-ADDR.ARPA domain will contain information about the
  1224. ISI gateway between net 10 and 26, an MIT gateway from net 10 to MIT's
  1225.  
  1226.  
  1227.  
  1228. Mockapetris                                                    [Page 22]
  1229.  
  1230. RFC 1035        Domain Implementation and Specification    November 1987
  1231.  
  1232.  
  1233. net 18, and hosts A.ISI.EDU and MULTICS.MIT.EDU.  Assuming that ISI
  1234. gateway has addresses 10.2.0.22 and 26.0.0.103, and a name MILNET-
  1235. GW.ISI.EDU, and the MIT gateway has addresses 10.0.0.77 and 18.10.0.4
  1236. and a name GW.LCS.MIT.EDU, the domain database would contain:
  1237.  
  1238.     10.IN-ADDR.ARPA.           PTR MILNET-GW.ISI.EDU.
  1239.     10.IN-ADDR.ARPA.           PTR GW.LCS.MIT.EDU.
  1240.     18.IN-ADDR.ARPA.           PTR GW.LCS.MIT.EDU.
  1241.     26.IN-ADDR.ARPA.           PTR MILNET-GW.ISI.EDU.
  1242.     22.0.2.10.IN-ADDR.ARPA.    PTR MILNET-GW.ISI.EDU.
  1243.     103.0.0.26.IN-ADDR.ARPA.   PTR MILNET-GW.ISI.EDU.
  1244.     77.0.0.10.IN-ADDR.ARPA.    PTR GW.LCS.MIT.EDU.
  1245.     4.0.10.18.IN-ADDR.ARPA.    PTR GW.LCS.MIT.EDU.
  1246.     103.0.3.26.IN-ADDR.ARPA.   PTR A.ISI.EDU.
  1247.     6.0.0.10.IN-ADDR.ARPA.     PTR MULTICS.MIT.EDU.
  1248.  
  1249. Thus a program which wanted to locate gateways on net 10 would originate
  1250. a query of the form QTYPE=PTR, QCLASS=IN, QNAME=10.IN-ADDR.ARPA.  It
  1251. would receive two RRs in response:
  1252.  
  1253.     10.IN-ADDR.ARPA.           PTR MILNET-GW.ISI.EDU.
  1254.     10.IN-ADDR.ARPA.           PTR GW.LCS.MIT.EDU.
  1255.  
  1256. The program could then originate QTYPE=A, QCLASS=IN queries for MILNET-
  1257. GW.ISI.EDU. and GW.LCS.MIT.EDU. to discover the Internet addresses of
  1258. these gateways.
  1259.  
  1260. A resolver which wanted to find the host name corresponding to Internet
  1261. host address 10.0.0.6 would pursue a query of the form QTYPE=PTR,
  1262. QCLASS=IN, QNAME=6.0.0.10.IN-ADDR.ARPA, and would receive:
  1263.  
  1264.     6.0.0.10.IN-ADDR.ARPA.     PTR MULTICS.MIT.EDU.
  1265.  
  1266. Several cautions apply to the use of these services:
  1267.    - Since the IN-ADDR.ARPA special domain and the normal domain
  1268.      for a particular host or gateway will be in different zones,
  1269.      the possibility exists that that the data may be inconsistent.
  1270.  
  1271.    - Gateways will often have two names in separate domains, only
  1272.      one of which can be primary.
  1273.  
  1274.    - Systems that use the domain database to initialize their
  1275.      routing tables must start with enough gateway information to
  1276.      guarantee that they can access the appropriate name server.
  1277.  
  1278.    - The gateway data only reflects the existence of a gateway in a
  1279.      manner equivalent to the current HOSTS.TXT file.  It doesn't
  1280.      replace the dynamic availability information from GGP or EGP.
  1281.  
  1282.  
  1283.  
  1284. Mockapetris                                                    [Page 23]
  1285.  
  1286. RFC 1035        Domain Implementation and Specification    November 1987
  1287.  
  1288.  
  1289. 3.6. Defining new types, classes, and special namespaces
  1290.  
  1291. The previously defined types and classes are the ones in use as of the
  1292. date of this memo.  New definitions should be expected.  This section
  1293. makes some recommendations to designers considering additions to the
  1294. existing facilities.  The mailing list NAMEDROPPERS@SRI-NIC.ARPA is the
  1295. forum where general discussion of design issues takes place.
  1296.  
  1297. In general, a new type is appropriate when new information is to be
  1298. added to the database about an existing object, or we need new data
  1299. formats for some totally new object.  Designers should attempt to define
  1300. types and their RDATA formats that are generally applicable to all
  1301. classes, and which avoid duplication of information.  New classes are
  1302. appropriate when the DNS is to be used for a new protocol, etc which
  1303. requires new class-specific data formats, or when a copy of the existing
  1304. name space is desired, but a separate management domain is necessary.
  1305.  
  1306. New types and classes need mnemonics for master files; the format of the
  1307. master files requires that the mnemonics for type and class be disjoint.
  1308.  
  1309. TYPE and CLASS values must be a proper subset of QTYPEs and QCLASSes
  1310. respectively.
  1311.  
  1312. The present system uses multiple RRs to represent multiple values of a
  1313. type rather than storing multiple values in the RDATA section of a
  1314. single RR.  This is less efficient for most applications, but does keep
  1315. RRs shorter.  The multiple RRs assumption is incorporated in some
  1316. experimental work on dynamic update methods.
  1317.  
  1318. The present system attempts to minimize the duplication of data in the
  1319. database in order to insure consistency.  Thus, in order to find the
  1320. address of the host for a mail exchange, you map the mail domain name to
  1321. a host name, then the host name to addresses, rather than a direct
  1322. mapping to host address.  This approach is preferred because it avoids
  1323. the opportunity for inconsistency.
  1324.  
  1325. In defining a new type of data, multiple RR types should not be used to
  1326. create an ordering between entries or express different formats for
  1327. equivalent bindings, instead this information should be carried in the
  1328. body of the RR and a single type used.  This policy avoids problems with
  1329. caching multiple types and defining QTYPEs to match multiple types.
  1330.  
  1331. For example, the original form of mail exchange binding used two RR
  1332. types one to represent a "closer" exchange (MD) and one to represent a
  1333. "less close" exchange (MF).  The difficulty is that the presence of one
  1334. RR type in a cache doesn't convey any information about the other
  1335. because the query which acquired the cached information might have used
  1336. a QTYPE of MF, MD, or MAILA (which matched both).  The redesigned
  1337.  
  1338.  
  1339.  
  1340. Mockapetris                                                    [Page 24]
  1341.  
  1342. RFC 1035        Domain Implementation and Specification    November 1987
  1343.  
  1344.  
  1345. service used a single type (MX) with a "preference" value in the RDATA
  1346. section which can order different RRs.  However, if any MX RRs are found
  1347. in the cache, then all should be there.
  1348.  
  1349. 4. MESSAGES
  1350.  
  1351. 4.1. Format
  1352.  
  1353. All communications inside of the domain protocol are carried in a single
  1354. format called a message.  The top level format of message is divided
  1355. into 5 sections (some of which are empty in certain cases) shown below:
  1356.  
  1357.     +---------------------+
  1358.     |        Header       |
  1359.     +---------------------+
  1360.     |       Question      | the question for the name server
  1361.     +---------------------+
  1362.     |        Answer       | RRs answering the question
  1363.     +---------------------+
  1364.     |      Authority      | RRs pointing toward an authority
  1365.     +---------------------+
  1366.     |      Additional     | RRs holding additional information
  1367.     +---------------------+
  1368.  
  1369. The header section is always present.  The header includes fields that
  1370. specify which of the remaining sections are present, and also specify
  1371. whether the message is a query or a response, a standard query or some
  1372. other opcode, etc.
  1373.  
  1374. The names of the sections after the header are derived from their use in
  1375. standard queries.  The question section contains fields that describe a
  1376. question to a name server.  These fields are a query type (QTYPE), a
  1377. query class (QCLASS), and a query domain name (QNAME).  The last three
  1378. sections have the same format: a possibly empty list of concatenated
  1379. resource records (RRs).  The answer section contains RRs that answer the
  1380. question; the authority section contains RRs that point toward an
  1381. authoritative name server; the additional records section contains RRs
  1382. which relate to the query, but are not strictly answers for the
  1383. question.
  1384.  
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390.  
  1391.  
  1392.  
  1393.  
  1394.  
  1395.  
  1396. Mockapetris                                                    [Page 25]
  1397.  
  1398. RFC 1035        Domain Implementation and Specification    November 1987
  1399.  
  1400.  
  1401. 4.1.1. Header section format
  1402.  
  1403. The header contains the following fields:
  1404.  
  1405.                                     1  1  1  1  1  1
  1406.       0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
  1407.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1408.     |                      ID                       |
  1409.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1410.     |QR|   Opcode  |AA|TC|RD|RA|   Z    |   RCODE   |
  1411.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1412.     |                    QDCOUNT                    |
  1413.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1414.     |                    ANCOUNT                    |
  1415.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1416.     |                    NSCOUNT                    |
  1417.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1418.     |                    ARCOUNT                    |
  1419.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1420.  
  1421. where:
  1422.  
  1423. ID              A 16 bit identifier assigned by the program that
  1424.                 generates any kind of query.  This identifier is copied
  1425.                 the corresponding reply and can be used by the requester
  1426.                 to match up replies to outstanding queries.
  1427.  
  1428. QR              A one bit field that specifies whether this message is a
  1429.                 query (0), or a response (1).
  1430.  
  1431. OPCODE          A four bit field that specifies kind of query in this
  1432.                 message.  This value is set by the originator of a query
  1433.                 and copied into the response.  The values are:
  1434.  
  1435.                 0               a standard query (QUERY)
  1436.  
  1437.                 1               an inverse query (IQUERY)
  1438.  
  1439.                 2               a server status request (STATUS)
  1440.  
  1441.                 3-15            reserved for future use
  1442.  
  1443. AA              Authoritative Answer - this bit is valid in responses,
  1444.                 and specifies that the responding name server is an
  1445.                 authority for the domain name in question section.
  1446.  
  1447.                 Note that the contents of the answer section may have
  1448.                 multiple owner names because of aliases.  The AA bit
  1449.  
  1450.  
  1451.  
  1452. Mockapetris                                                    [Page 26]
  1453.  
  1454. RFC 1035        Domain Implementation and Specification    November 1987
  1455.  
  1456.  
  1457.                 corresponds to the name which matches the query name, or
  1458.                 the first owner name in the answer section.
  1459.  
  1460. TC              TrunCation - specifies that this message was truncated
  1461.                 due to length greater than that permitted on the
  1462.                 transmission channel.
  1463.  
  1464. RD              Recursion Desired - this bit may be set in a query and
  1465.                 is copied into the response.  If RD is set, it directs
  1466.                 the name server to pursue the query recursively.
  1467.                 Recursive query support is optional.
  1468.  
  1469. RA              Recursion Available - this be is set or cleared in a
  1470.                 response, and denotes whether recursive query support is
  1471.                 available in the name server.
  1472.  
  1473. Z               Reserved for future use.  Must be zero in all queries
  1474.                 and responses.
  1475.  
  1476. RCODE           Response code - this 4 bit field is set as part of
  1477.                 responses.  The values have the following
  1478.                 interpretation:
  1479.  
  1480.                 0               No error condition
  1481.  
  1482.                 1               Format error - The name server was
  1483.                                 unable to interpret the query.
  1484.  
  1485.                 2               Server failure - The name server was
  1486.                                 unable to process this query due to a
  1487.                                 problem with the name server.
  1488.  
  1489.                 3               Name Error - Meaningful only for
  1490.                                 responses from an authoritative name
  1491.                                 server, this code signifies that the
  1492.                                 domain name referenced in the query does
  1493.                                 not exist.
  1494.  
  1495.                 4               Not Implemented - The name server does
  1496.                                 not support the requested kind of query.
  1497.  
  1498.                 5               Refused - The name server refuses to
  1499.                                 perform the specified operation for
  1500.                                 policy reasons.  For example, a name
  1501.                                 server may not wish to provide the
  1502.                                 information to the particular requester,
  1503.                                 or a name server may not wish to perform
  1504.                                 a particular operation (e.g., zone
  1505.  
  1506.  
  1507.  
  1508. Mockapetris                                                    [Page 27]
  1509.  
  1510. RFC 1035        Domain Implementation and Specification    November 1987
  1511.  
  1512.  
  1513.                                 transfer) for particular data.
  1514.  
  1515.                 6-15            Reserved for future use.
  1516.  
  1517. QDCOUNT         an unsigned 16 bit integer specifying the number of
  1518.                 entries in the question section.
  1519.  
  1520. ANCOUNT         an unsigned 16 bit integer specifying the number of
  1521.                 resource records in the answer section.
  1522.  
  1523. NSCOUNT         an unsigned 16 bit integer specifying the number of name
  1524.                 server resource records in the authority records
  1525.                 section.
  1526.  
  1527. ARCOUNT         an unsigned 16 bit integer specifying the number of
  1528.                 resource records in the additional records section.
  1529.  
  1530. 4.1.2. Question section format
  1531.  
  1532. The question section is used to carry the "question" in most queries,
  1533. i.e., the parameters that define what is being asked.  The section
  1534. contains QDCOUNT (usually 1) entries, each of the following format:
  1535.  
  1536.                                     1  1  1  1  1  1
  1537.       0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
  1538.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1539.     |                                               |
  1540.     /                     QNAME                     /
  1541.     /                                               /
  1542.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1543.     |                     QTYPE                     |
  1544.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1545.     |                     QCLASS                    |
  1546.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1547.  
  1548. where:
  1549.  
  1550. QNAME           a domain name represented as a sequence of labels, where
  1551.                 each label consists of a length octet followed by that
  1552.                 number of octets.  The domain name terminates with the
  1553.                 zero length octet for the null label of the root.  Note
  1554.                 that this field may be an odd number of octets; no
  1555.                 padding is used.
  1556.  
  1557. QTYPE           a two octet code which specifies the type of the query.
  1558.                 The values for this field include all codes valid for a
  1559.                 TYPE field, together with some more general codes which
  1560.                 can match more than one type of RR.
  1561.  
  1562.  
  1563.  
  1564. Mockapetris                                                    [Page 28]
  1565.  
  1566. RFC 1035        Domain Implementation and Specification    November 1987
  1567.  
  1568.  
  1569. QCLASS          a two octet code that specifies the class of the query.
  1570.                 For example, the QCLASS field is IN for the Internet.
  1571.  
  1572. 4.1.3. Resource record format
  1573.  
  1574. The answer, authority, and additional sections all share the same
  1575. format: a variable number of resource records, where the number of
  1576. records is specified in the corresponding count field in the header.
  1577. Each resource record has the following format:
  1578.                                     1  1  1  1  1  1
  1579.       0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
  1580.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1581.     |                                               |
  1582.     /                                               /
  1583.     /                      NAME                     /
  1584.     |                                               |
  1585.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1586.     |                      TYPE                     |
  1587.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1588.     |                     CLASS                     |
  1589.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1590.     |                      TTL                      |
  1591.     |                                               |
  1592.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1593.     |                   RDLENGTH                    |
  1594.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--|
  1595.     /                     RDATA                     /
  1596.     /                                               /
  1597.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1598.  
  1599. where:
  1600.  
  1601. NAME            a domain name to which this resource record pertains.
  1602.  
  1603. TYPE            two octets containing one of the RR type codes.  This
  1604.                 field specifies the meaning of the data in the RDATA
  1605.                 field.
  1606.  
  1607. CLASS           two octets which specify the class of the data in the
  1608.                 RDATA field.
  1609.  
  1610. TTL             a 32 bit unsigned integer that specifies the time
  1611.                 interval (in seconds) that the resource record may be
  1612.                 cached before it should be discarded.  Zero values are
  1613.                 interpreted to mean that the RR can only be used for the
  1614.                 transaction in progress, and should not be cached.
  1615.  
  1616.  
  1617.  
  1618.  
  1619.  
  1620. Mockapetris                                                    [Page 29]
  1621.  
  1622. RFC 1035        Domain Implementation and Specification    November 1987
  1623.  
  1624.  
  1625. RDLENGTH        an unsigned 16 bit integer that specifies the length in
  1626.                 octets of the RDATA field.
  1627.  
  1628. RDATA           a variable length string of octets that describes the
  1629.                 resource.  The format of this information varies
  1630.                 according to the TYPE and CLASS of the resource record.
  1631.                 For example, the if the TYPE is A and the CLASS is IN,
  1632.                 the RDATA field is a 4 octet ARPA Internet address.
  1633.  
  1634. 4.1.4. Message compression
  1635.  
  1636. In order to reduce the size of messages, the domain system utilizes a
  1637. compression scheme which eliminates the repetition of domain names in a
  1638. message.  In this scheme, an entire domain name or a list of labels at
  1639. the end of a domain name is replaced with a pointer to a prior occurance
  1640. of the same name.
  1641.  
  1642. The pointer takes the form of a two octet sequence:
  1643.  
  1644.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1645.     | 1  1|                OFFSET                   |
  1646.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1647.  
  1648. The first two bits are ones.  This allows a pointer to be distinguished
  1649. from a label, since the label must begin with two zero bits because
  1650. labels are restricted to 63 octets or less.  (The 10 and 01 combinations
  1651. are reserved for future use.)  The OFFSET field specifies an offset from
  1652. the start of the message (i.e., the first octet of the ID field in the
  1653. domain header).  A zero offset specifies the first byte of the ID field,
  1654. etc.
  1655.  
  1656. The compression scheme allows a domain name in a message to be
  1657. represented as either:
  1658.  
  1659.    - a sequence of labels ending in a zero octet
  1660.  
  1661.    - a pointer
  1662.  
  1663.    - a sequence of labels ending with a pointer
  1664.  
  1665. Pointers can only be used for occurances of a domain name where the
  1666. format is not class specific.  If this were not the case, a name server
  1667. or resolver would be required to know the format of all RRs it handled.
  1668. As yet, there are no such cases, but they may occur in future RDATA
  1669. formats.
  1670.  
  1671. If a domain name is contained in a part of the message subject to a
  1672. length field (such as the RDATA section of an RR), and compression is
  1673.  
  1674.  
  1675.  
  1676. Mockapetris                                                    [Page 30]
  1677.  
  1678. RFC 1035        Domain Implementation and Specification    November 1987
  1679.  
  1680.  
  1681. used, the length of the compressed name is used in the length
  1682. calculation, rather than the length of the expanded name.
  1683.  
  1684. Programs are free to avoid using pointers in messages they generate,
  1685. although this will reduce datagram capacity, and may cause truncation.
  1686. However all programs are required to understand arriving messages that
  1687. contain pointers.
  1688.  
  1689. For example, a datagram might need to use the domain names F.ISI.ARPA,
  1690. FOO.F.ISI.ARPA, ARPA, and the root.  Ignoring the other fields of the
  1691. message, these domain names might be represented as:
  1692.  
  1693.        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1694.     20 |           1           |           F           |
  1695.        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1696.     22 |           3           |           I           |
  1697.        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1698.     24 |           S           |           I           |
  1699.        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1700.     26 |           4           |           A           |
  1701.        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1702.     28 |           R           |           P           |
  1703.        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1704.     30 |           A           |           0           |
  1705.        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1706.  
  1707.        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1708.     40 |           3           |           F           |
  1709.        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1710.     42 |           O           |           O           |
  1711.        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1712.     44 | 1  1|                20                       |
  1713.        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1714.  
  1715.        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1716.     64 | 1  1|                26                       |
  1717.        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1718.  
  1719.        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1720.     92 |           0           |                       |
  1721.        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1722.  
  1723. The domain name for F.ISI.ARPA is shown at offset 20.  The domain name
  1724. FOO.F.ISI.ARPA is shown at offset 40; this definition uses a pointer to
  1725. concatenate a label for FOO to the previously defined F.ISI.ARPA.  The
  1726. domain name ARPA is defined at offset 64 using a pointer to the ARPA
  1727. component of the name F.ISI.ARPA at 20; note that this pointer relies on
  1728. ARPA being the last label in the string at 20.  The root domain name is
  1729.  
  1730.  
  1731.  
  1732. Mockapetris                                                    [Page 31]
  1733.  
  1734. RFC 1035        Domain Implementation and Specification    November 1987
  1735.  
  1736.  
  1737. defined by a single octet of zeros at 92; the root domain name has no
  1738. labels.
  1739.  
  1740. 4.2. Transport
  1741.  
  1742. The DNS assumes that messages will be transmitted as datagrams or in a
  1743. byte stream carried by a virtual circuit.  While virtual circuits can be
  1744. used for any DNS activity, datagrams are preferred for queries due to
  1745. their lower overhead and better performance.  Zone refresh activities
  1746. must use virtual circuits because of the need for reliable transfer.
  1747.  
  1748. The Internet supports name server access using TCP [RFC-793] on server
  1749. port 53 (decimal) as well as datagram access using UDP [RFC-768] on UDP
  1750. port 53 (decimal).
  1751.  
  1752. 4.2.1. UDP usage
  1753.  
  1754. Messages sent using UDP user server port 53 (decimal).
  1755.  
  1756. Messages carried by UDP are restricted to 512 bytes (not counting the IP
  1757. or UDP headers).  Longer messages are truncated and the TC bit is set in
  1758. the header.
  1759.  
  1760. UDP is not acceptable for zone transfers, but is the recommended method
  1761. for standard queries in the Internet.  Queries sent using UDP may be
  1762. lost, and hence a retransmission strategy is required.  Queries or their
  1763. responses may be reordered by the network, or by processing in name
  1764. servers, so resolvers should not depend on them being returned in order.
  1765.  
  1766. The optimal UDP retransmission policy will vary with performance of the
  1767. Internet and the needs of the client, but the following are recommended:
  1768.  
  1769.    - The client should try other servers and server addresses
  1770.      before repeating a query to a specific address of a server.
  1771.  
  1772.    - The retransmission interval should be based on prior
  1773.      statistics if possible.  Too aggressive retransmission can
  1774.      easily slow responses for the community at large.  Depending
  1775.      on how well connected the client is to its expected servers,
  1776.      the minimum retransmission interval should be 2-5 seconds.
  1777.  
  1778. More suggestions on server selection and retransmission policy can be
  1779. found in the resolver section of this memo.
  1780.  
  1781. 4.2.2. TCP usage
  1782.  
  1783. Messages sent over TCP connections use server port 53 (decimal).  The
  1784. message is prefixed with a two byte length field which gives the message
  1785.  
  1786.  
  1787.  
  1788. Mockapetris                                                    [Page 32]
  1789.  
  1790. RFC 1035        Domain Implementation and Specification    November 1987
  1791.  
  1792.  
  1793. length, excluding the two byte length field.  This length field allows
  1794. the low-level processing to assemble a complete message before beginning
  1795. to parse it.
  1796.  
  1797. Several connection management policies are recommended:
  1798.  
  1799.    - The server should not block other activities waiting for TCP
  1800.      data.
  1801.  
  1802.    - The server should support multiple connections.
  1803.  
  1804.    - The server should assume that the client will initiate
  1805.      connection closing, and should delay closing its end of the
  1806.      connection until all outstanding client requests have been
  1807.      satisfied.
  1808.  
  1809.    - If the server needs to close a dormant connection to reclaim
  1810.      resources, it should wait until the connection has been idle
  1811.      for a period on the order of two minutes.  In particular, the
  1812.      server should allow the SOA and AXFR request sequence (which
  1813.      begins a refresh operation) to be made on a single connection.
  1814.      Since the server would be unable to answer queries anyway, a
  1815.      unilateral close or reset may be used instead of a graceful
  1816.      close.
  1817.  
  1818. 5. MASTER FILES
  1819.  
  1820. Master files are text files that contain RRs in text form.  Since the
  1821. contents of a zone can be expressed in the form of a list of RRs a
  1822. master file is most often used to define a zone, though it can be used
  1823. to list a cache's contents.  Hence, this section first discusses the
  1824. format of RRs in a master file, and then the special considerations when
  1825. a master file is used to create a zone in some name server.
  1826.  
  1827. 5.1. Format
  1828.  
  1829. The format of these files is a sequence of entries.  Entries are
  1830. predominantly line-oriented, though parentheses can be used to continue
  1831. a list of items across a line boundary, and text literals can contain
  1832. CRLF within the text.  Any combination of tabs and spaces act as a
  1833. delimiter between the separate items that make up an entry.  The end of
  1834. any line in the master file can end with a comment.  The comment starts
  1835. with a ";" (semicolon).
  1836.  
  1837. The following entries are defined:
  1838.  
  1839.     <blank>[<comment>]
  1840.  
  1841.  
  1842.  
  1843.  
  1844. Mockapetris                                                    [Page 33]
  1845.  
  1846. RFC 1035        Domain Implementation and Specification    November 1987
  1847.  
  1848.  
  1849.     $ORIGIN <domain-name> [<comment>]
  1850.  
  1851.     $INCLUDE <file-name> [<domain-name>] [<comment>]
  1852.  
  1853.     <domain-name><rr> [<comment>]
  1854.  
  1855.     <blank><rr> [<comment>]
  1856.  
  1857. Blank lines, with or without comments, are allowed anywhere in the file.
  1858.  
  1859. Two control entries are defined: $ORIGIN and $INCLUDE.  $ORIGIN is
  1860. followed by a domain name, and resets the current origin for relative
  1861. domain names to the stated name.  $INCLUDE inserts the named file into
  1862. the current file, and may optionally specify a domain name that sets the
  1863. relative domain name origin for the included file.  $INCLUDE may also
  1864. have a comment.  Note that a $INCLUDE entry never changes the relative
  1865. origin of the parent file, regardless of changes to the relative origin
  1866. made within the included file.
  1867.  
  1868. The last two forms represent RRs.  If an entry for an RR begins with a
  1869. blank, then the RR is assumed to be owned by the last stated owner.  If
  1870. an RR entry begins with a <domain-name>, then the owner name is reset.
  1871.  
  1872. <rr> contents take one of the following forms:
  1873.  
  1874.     [<TTL>] [<class>] <type> <RDATA>
  1875.  
  1876.     [<class>] [<TTL>] <type> <RDATA>
  1877.  
  1878. The RR begins with optional TTL and class fields, followed by a type and
  1879. RDATA field appropriate to the type and class.  Class and type use the
  1880. standard mnemonics, TTL is a decimal integer.  Omitted class and TTL
  1881. values are default to the last explicitly stated values.  Since type and
  1882. class mnemonics are disjoint, the parse is unique.  (Note that this
  1883. order is different from the order used in examples and the order used in
  1884. the actual RRs; the given order allows easier parsing and defaulting.)
  1885.  
  1886. <domain-name>s make up a large share of the data in the master file.
  1887. The labels in the domain name are expressed as character strings and
  1888. separated by dots.  Quoting conventions allow arbitrary characters to be
  1889. stored in domain names.  Domain names that end in a dot are called
  1890. absolute, and are taken as complete.  Domain names which do not end in a
  1891. dot are called relative; the actual domain name is the concatenation of
  1892. the relative part with an origin specified in a $ORIGIN, $INCLUDE, or as
  1893. an argument to the master file loading routine.  A relative name is an
  1894. error when no origin is available.
  1895.  
  1896.  
  1897.  
  1898.  
  1899.  
  1900. Mockapetris                                                    [Page 34]
  1901.  
  1902. RFC 1035        Domain Implementation and Specification    November 1987
  1903.  
  1904.  
  1905. <character-string> is expressed in one or two ways: as a contiguous set
  1906. of characters without interior spaces, or as a string beginning with a "
  1907. and ending with a ".  Inside a " delimited string any character can
  1908. occur, except for a " itself, which must be quoted using \ (back slash).
  1909.  
  1910. Because these files are text files several special encodings are
  1911. necessary to allow arbitrary data to be loaded.  In particular:
  1912.  
  1913.                 of the root.
  1914.  
  1915. @               A free standing @ is used to denote the current origin.
  1916.  
  1917. \X              where X is any character other than a digit (0-9), is
  1918.                 used to quote that character so that its special meaning
  1919.                 does not apply.  For example, "\." can be used to place
  1920.                 a dot character in a label.
  1921.  
  1922. \DDD            where each D is a digit is the octet corresponding to
  1923.                 the decimal number described by DDD.  The resulting
  1924.                 octet is assumed to be text and is not checked for
  1925.                 special meaning.
  1926.  
  1927. ( )             Parentheses are used to group data that crosses a line
  1928.                 boundary.  In effect, line terminations are not
  1929.                 recognized within parentheses.
  1930.  
  1931. ;               Semicolon is used to start a comment; the remainder of
  1932.                 the line is ignored.
  1933.  
  1934. 5.2. Use of master files to define zones
  1935.  
  1936. When a master file is used to load a zone, the operation should be
  1937. suppressed if any errors are encountered in the master file.  The
  1938. rationale for this is that a single error can have widespread
  1939. consequences.  For example, suppose that the RRs defining a delegation
  1940. have syntax errors; then the server will return authoritative name
  1941. errors for all names in the subzone (except in the case where the
  1942. subzone is also present on the server).
  1943.  
  1944. Several other validity checks that should be performed in addition to
  1945. insuring that the file is syntactically correct:
  1946.  
  1947.    1. All RRs in the file should have the same class.
  1948.  
  1949.    2. Exactly one SOA RR should be present at the top of the zone.
  1950.  
  1951.    3. If delegations are present and glue information is required,
  1952.       it should be present.
  1953.  
  1954.  
  1955.  
  1956. Mockapetris                                                    [Page 35]
  1957.  
  1958. RFC 1035        Domain Implementation and Specification    November 1987
  1959.  
  1960.  
  1961.    4. Information present outside of the authoritative nodes in the
  1962.       zone should be glue information, rather than the result of an
  1963.       origin or similar error.
  1964.  
  1965. 5.3. Master file example
  1966.  
  1967. The following is an example file which might be used to define the
  1968. ISI.EDU zone.and is loaded with an origin of ISI.EDU:
  1969.  
  1970. @   IN  SOA     VENERA      Action\.domains (
  1971.                                  20     ; SERIAL
  1972.                                  7200   ; REFRESH
  1973.                                  600    ; RETRY
  1974.                                  3600000; EXPIRE
  1975.                                  60)    ; MINIMUM
  1976.  
  1977.         NS      A.ISI.EDU.
  1978.         NS      VENERA
  1979.         NS      VAXA
  1980.         MX      10      VENERA
  1981.         MX      20      VAXA
  1982.  
  1983. A       A       26.3.0.103
  1984.  
  1985. VENERA  A       10.1.0.52
  1986.         A       128.9.0.32
  1987.  
  1988. VAXA    A       10.2.0.27
  1989.         A       128.9.0.33
  1990.  
  1991.  
  1992. $INCLUDE <SUBSYS>ISI-MAILBOXES.TXT
  1993.  
  1994. Where the file <SUBSYS>ISI-MAILBOXES.TXT is:
  1995.  
  1996.     MOE     MB      A.ISI.EDU.
  1997.     LARRY   MB      A.ISI.EDU.
  1998.     CURLEY  MB      A.ISI.EDU.
  1999.     STOOGES MG      MOE
  2000.             MG      LARRY
  2001.             MG      CURLEY
  2002.  
  2003. Note the use of the \ character in the SOA RR to specify the responsible
  2004. person mailbox "Action.domains@E.ISI.EDU".
  2005.  
  2006.  
  2007.  
  2008.  
  2009.  
  2010.  
  2011.  
  2012. Mockapetris                                                    [Page 36]
  2013.  
  2014. RFC 1035        Domain Implementation and Specification    November 1987
  2015.  
  2016.  
  2017. 6. NAME SERVER IMPLEMENTATION
  2018.  
  2019. 6.1. Architecture
  2020.  
  2021. The optimal structure for the name server will depend on the host
  2022. operating system and whether the name server is integrated with resolver
  2023. operations, either by supporting recursive service, or by sharing its
  2024. database with a resolver.  This section discusses implementation
  2025. considerations for a name server which shares a database with a
  2026. resolver, but most of these concerns are present in any name server.
  2027.  
  2028. 6.1.1. Control
  2029.  
  2030. A name server must employ multiple concurrent activities, whether they
  2031. are implemented as separate tasks in the host's OS or multiplexing
  2032. inside a single name server program.  It is simply not acceptable for a
  2033. name server to block the service of UDP requests while it waits for TCP
  2034. data for refreshing or query activities.  Similarly, a name server
  2035. should not attempt to provide recursive service without processing such
  2036. requests in parallel, though it may choose to serialize requests from a
  2037. single client, or to regard identical requests from the same client as
  2038. duplicates.  A name server should not substantially delay requests while
  2039. it reloads a zone from master files or while it incorporates a newly
  2040. refreshed zone into its database.
  2041.  
  2042. 6.1.2. Database
  2043.  
  2044. While name server implementations are free to use any internal data
  2045. structures they choose, the suggested structure consists of three major
  2046. parts:
  2047.  
  2048.    - A "catalog" data structure which lists the zones available to
  2049.      this server, and a "pointer" to the zone data structure.  The
  2050.      main purpose of this structure is to find the nearest ancestor
  2051.      zone, if any, for arriving standard queries.
  2052.  
  2053.    - Separate data structures for each of the zones held by the
  2054.      name server.
  2055.  
  2056.    - A data structure for cached data. (or perhaps separate caches
  2057.      for different classes)
  2058.  
  2059. All of these data structures can be implemented an identical tree
  2060. structure format, with different data chained off the nodes in different
  2061. parts: in the catalog the data is pointers to zones, while in the zone
  2062. and cache data structures, the data will be RRs.  In designing the tree
  2063. framework the designer should recognize that query processing will need
  2064. to traverse the tree using case-insensitive label comparisons; and that
  2065.  
  2066.  
  2067.  
  2068. Mockapetris                                                    [Page 37]
  2069.  
  2070. RFC 1035        Domain Implementation and Specification    November 1987
  2071.  
  2072.  
  2073. in real data, a few nodes have a very high branching factor (100-1000 or
  2074. more), but the vast majority have a very low branching factor (0-1).
  2075.  
  2076. One way to solve the case problem is to store the labels for each node
  2077. in two pieces: a standardized-case representation of the label where all
  2078. ASCII characters are in a single case, together with a bit mask that
  2079. denotes which characters are actually of a different case.  The
  2080. branching factor diversity can be handled using a simple linked list for
  2081. a node until the branching factor exceeds some threshold, and
  2082. transitioning to a hash structure after the threshold is exceeded.  In
  2083. any case, hash structures used to store tree sections must insure that
  2084. hash functions and procedures preserve the casing conventions of the
  2085. DNS.
  2086.  
  2087. The use of separate structures for the different parts of the database
  2088. is motivated by several factors:
  2089.  
  2090.    - The catalog structure can be an almost static structure that
  2091.      need change only when the system administrator changes the
  2092.      zones supported by the server.  This structure can also be
  2093.      used to store parameters used to control refreshing
  2094.      activities.
  2095.  
  2096.    - The individual data structures for zones allow a zone to be
  2097.      replaced simply by changing a pointer in the catalog.  Zone
  2098.      refresh operations can build a new structure and, when
  2099.      complete, splice it into the database via a simple pointer
  2100.      replacement.  It is very important that when a zone is
  2101.      refreshed, queries should not use old and new data
  2102.      simultaneously.
  2103.  
  2104.    - With the proper search procedures, authoritative data in zones
  2105.      will always "hide", and hence take precedence over, cached
  2106.      data.
  2107.  
  2108.    - Errors in zone definitions that cause overlapping zones, etc.,
  2109.      may cause erroneous responses to queries, but problem
  2110.      determination is simplified, and the contents of one "bad"
  2111.      zone can't corrupt another.
  2112.  
  2113.    - Since the cache is most frequently updated, it is most
  2114.      vulnerable to corruption during system restarts.  It can also
  2115.      become full of expired RR data.  In either case, it can easily
  2116.      be discarded without disturbing zone data.
  2117.  
  2118. A major aspect of database design is selecting a structure which allows
  2119. the name server to deal with crashes of the name server's host.  State
  2120. information which a name server should save across system crashes
  2121.  
  2122.  
  2123.  
  2124. Mockapetris                                                    [Page 38]
  2125.  
  2126. RFC 1035        Domain Implementation and Specification    November 1987
  2127.  
  2128.  
  2129. includes the catalog structure (including the state of refreshing for
  2130. each zone) and the zone data itself.
  2131.  
  2132. 6.1.3. Time
  2133.  
  2134. Both the TTL data for RRs and the timing data for refreshing activities
  2135. depends on 32 bit timers in units of seconds.  Inside the database,
  2136. refresh timers and TTLs for cached data conceptually "count down", while
  2137. data in the zone stays with constant TTLs.
  2138.  
  2139. A recommended implementation strategy is to store time in two ways:  as
  2140. a relative increment and as an absolute time.  One way to do this is to
  2141. use positive 32 bit numbers for one type and negative numbers for the
  2142. other.  The RRs in zones use relative times; the refresh timers and
  2143. cache data use absolute times.  Absolute numbers are taken with respect
  2144. to some known origin and converted to relative values when placed in the
  2145. response to a query.  When an absolute TTL is negative after conversion
  2146. to relative, then the data is expired and should be ignored.
  2147.  
  2148. 6.2. Standard query processing
  2149.  
  2150. The major algorithm for standard query processing is presented in
  2151. [RFC-1034].
  2152.  
  2153. When processing queries with QCLASS=*, or some other QCLASS which
  2154. matches multiple classes, the response should never be authoritative
  2155. unless the server can guarantee that the response covers all classes.
  2156.  
  2157. When composing a response, RRs which are to be inserted in the
  2158. additional section, but duplicate RRs in the answer or authority
  2159. sections, may be omitted from the additional section.
  2160.  
  2161. When a response is so long that truncation is required, the truncation
  2162. should start at the end of the response and work forward in the
  2163. datagram.  Thus if there is any data for the authority section, the
  2164. answer section is guaranteed to be unique.
  2165.  
  2166. The MINIMUM value in the SOA should be used to set a floor on the TTL of
  2167. data distributed from a zone.  This floor function should be done when
  2168. the data is copied into a response.  This will allow future dynamic
  2169. update protocols to change the SOA MINIMUM field without ambiguous
  2170. semantics.
  2171.  
  2172. 6.3. Zone refresh and reload processing
  2173.  
  2174. In spite of a server's best efforts, it may be unable to load zone data
  2175. from a master file due to syntax errors, etc., or be unable to refresh a
  2176. zone within the its expiration parameter.  In this case, the name server
  2177.  
  2178.  
  2179.  
  2180. Mockapetris                                                    [Page 39]
  2181.  
  2182. RFC 1035        Domain Implementation and Specification    November 1987
  2183.  
  2184.  
  2185. should answer queries as if it were not supposed to possess the zone.
  2186.  
  2187. If a master is sending a zone out via AXFR, and a new version is created
  2188. during the transfer, the master should continue to send the old version
  2189. if possible.  In any case, it should never send part of one version and
  2190. part of another.  If completion is not possible, the master should reset
  2191. the connection on which the zone transfer is taking place.
  2192.  
  2193. 6.4. Inverse queries (Optional)
  2194.  
  2195. Inverse queries are an optional part of the DNS.  Name servers are not
  2196. required to support any form of inverse queries.  If a name server
  2197. receives an inverse query that it does not support, it returns an error
  2198. response with the "Not Implemented" error set in the header.  While
  2199. inverse query support is optional, all name servers must be at least
  2200. able to return the error response.
  2201.  
  2202. 6.4.1. The contents of inverse queries and responses          Inverse
  2203. queries reverse the mappings performed by standard query operations;
  2204. while a standard query maps a domain name to a resource, an inverse
  2205. query maps a resource to a domain name.  For example, a standard query
  2206. might bind a domain name to a host address; the corresponding inverse
  2207. query binds the host address to a domain name.
  2208.  
  2209. Inverse queries take the form of a single RR in the answer section of
  2210. the message, with an empty question section.  The owner name of the
  2211. query RR and its TTL are not significant.  The response carries
  2212. questions in the question section which identify all names possessing
  2213. the query RR WHICH THE NAME SERVER KNOWS.  Since no name server knows
  2214. about all of the domain name space, the response can never be assumed to
  2215. be complete.  Thus inverse queries are primarily useful for database
  2216. management and debugging activities.  Inverse queries are NOT an
  2217. acceptable method of mapping host addresses to host names; use the IN-
  2218. ADDR.ARPA domain instead.
  2219.  
  2220. Where possible, name servers should provide case-insensitive comparisons
  2221. for inverse queries.  Thus an inverse query asking for an MX RR of
  2222. "Venera.isi.edu" should get the same response as a query for
  2223. "VENERA.ISI.EDU"; an inverse query for HINFO RR "IBM-PC UNIX" should
  2224. produce the same result as an inverse query for "IBM-pc unix".  However,
  2225. this cannot be guaranteed because name servers may possess RRs that
  2226. contain character strings but the name server does not know that the
  2227. data is character.
  2228.  
  2229. When a name server processes an inverse query, it either returns:
  2230.  
  2231.    1. zero, one, or multiple domain names for the specified
  2232.       resource as QNAMEs in the question section
  2233.  
  2234.  
  2235.  
  2236. Mockapetris                                                    [Page 40]
  2237.  
  2238. RFC 1035        Domain Implementation and Specification    November 1987
  2239.  
  2240.  
  2241.    2. an error code indicating that the name server doesn't support
  2242.       inverse mapping of the specified resource type.
  2243.  
  2244. When the response to an inverse query contains one or more QNAMEs, the
  2245. owner name and TTL of the RR in the answer section which defines the
  2246. inverse query is modified to exactly match an RR found at the first
  2247. QNAME.
  2248.  
  2249. RRs returned in the inverse queries cannot be cached using the same
  2250. mechanism as is used for the replies to standard queries.  One reason
  2251. for this is that a name might have multiple RRs of the same type, and
  2252. only one would appear.  For example, an inverse query for a single
  2253. address of a multiply homed host might create the impression that only
  2254. one address existed.
  2255.  
  2256. 6.4.2. Inverse query and response example          The overall structure
  2257. of an inverse query for retrieving the domain name that corresponds to
  2258. Internet address 10.1.0.52 is shown below:
  2259.  
  2260.                          +-----------------------------------------+
  2261.            Header        |          OPCODE=IQUERY, ID=997          |
  2262.                          +-----------------------------------------+
  2263.           Question       |                 <empty>                 |
  2264.                          +-----------------------------------------+
  2265.            Answer        |        <anyname> A IN 10.1.0.52         |
  2266.                          +-----------------------------------------+
  2267.           Authority      |                 <empty>                 |
  2268.                          +-----------------------------------------+
  2269.          Additional      |                 <empty>                 |
  2270.                          +-----------------------------------------+
  2271.  
  2272. This query asks for a question whose answer is the Internet style
  2273. address 10.1.0.52.  Since the owner name is not known, any domain name
  2274. can be used as a placeholder (and is ignored).  A single octet of zero,
  2275. signifying the root, is usually used because it minimizes the length of
  2276. the message.  The TTL of the RR is not significant.  The response to
  2277. this query might be:
  2278.  
  2279.  
  2280.  
  2281.  
  2282.  
  2283.  
  2284.  
  2285.  
  2286.  
  2287.  
  2288.  
  2289.  
  2290.  
  2291.  
  2292. Mockapetris                                                    [Page 41]
  2293.  
  2294. RFC 1035        Domain Implementation and Specification    November 1987
  2295.  
  2296.  
  2297.                          +-----------------------------------------+
  2298.            Header        |         OPCODE=RESPONSE, ID=997         |
  2299.                          +-----------------------------------------+
  2300.           Question       |QTYPE=A, QCLASS=IN, QNAME=VENERA.ISI.EDU |
  2301.                          +-----------------------------------------+
  2302.            Answer        |  VENERA.ISI.EDU  A IN 10.1.0.52         |
  2303.                          +-----------------------------------------+
  2304.           Authority      |                 <empty>                 |
  2305.                          +-----------------------------------------+
  2306.          Additional      |                 <empty>                 |
  2307.                          +-----------------------------------------+
  2308.  
  2309. Note that the QTYPE in a response to an inverse query is the same as the
  2310. TYPE field in the answer section of the inverse query.  Responses to
  2311. inverse queries may contain multiple questions when the inverse is not
  2312. unique.  If the question section in the response is not empty, then the
  2313. RR in the answer section is modified to correspond to be an exact copy
  2314. of an RR at the first QNAME.
  2315.  
  2316. 6.4.3. Inverse query processing
  2317.  
  2318. Name servers that support inverse queries can support these operations
  2319. through exhaustive searches of their databases, but this becomes
  2320. impractical as the size of the database increases.  An alternative
  2321. approach is to invert the database according to the search key.
  2322.  
  2323. For name servers that support multiple zones and a large amount of data,
  2324. the recommended approach is separate inversions for each zone.  When a
  2325. particular zone is changed during a refresh, only its inversions need to
  2326. be redone.
  2327.  
  2328. Support for transfer of this type of inversion may be included in future
  2329. versions of the domain system, but is not supported in this version.
  2330.  
  2331. 6.5. Completion queries and responses
  2332.  
  2333. The optional completion services described in RFC-882 and RFC-883 have
  2334. been deleted.  Redesigned services may become available in the future.
  2335.  
  2336.  
  2337.  
  2338.  
  2339.  
  2340.  
  2341.  
  2342.  
  2343.  
  2344.  
  2345.  
  2346.  
  2347.  
  2348. Mockapetris                                                    [Page 42]
  2349.  
  2350. RFC 1035        Domain Implementation and Specification    November 1987
  2351.  
  2352.  
  2353. 7. RESOLVER IMPLEMENTATION
  2354.  
  2355. The top levels of the recommended resolver algorithm are discussed in
  2356. [RFC-1034].  This section discusses implementation details assuming the
  2357. database structure suggested in the name server implementation section
  2358. of this memo.
  2359.  
  2360. 7.1. Transforming a user request into a query
  2361.  
  2362. The first step a resolver takes is to transform the client's request,
  2363. stated in a format suitable to the local OS, into a search specification
  2364. for RRs at a specific name which match a specific QTYPE and QCLASS.
  2365. Where possible, the QTYPE and QCLASS should correspond to a single type
  2366. and a single class, because this makes the use of cached data much
  2367. simpler.  The reason for this is that the presence of data of one type
  2368. in a cache doesn't confirm the existence or non-existence of data of
  2369. other types, hence the only way to be sure is to consult an
  2370. authoritative source.  If QCLASS=* is used, then authoritative answers
  2371. won't be available.
  2372.  
  2373. Since a resolver must be able to multiplex multiple requests if it is to
  2374. perform its function efficiently, each pending request is usually
  2375. represented in some block of state information.  This state block will
  2376. typically contain:
  2377.  
  2378.    - A timestamp indicating the time the request began.
  2379.      The timestamp is used to decide whether RRs in the database
  2380.      can be used or are out of date.  This timestamp uses the
  2381.      absolute time format previously discussed for RR storage in
  2382.      zones and caches.  Note that when an RRs TTL indicates a
  2383.      relative time, the RR must be timely, since it is part of a
  2384.      zone.  When the RR has an absolute time, it is part of a
  2385.      cache, and the TTL of the RR is compared against the timestamp
  2386.      for the start of the request.
  2387.  
  2388.      Note that using the timestamp is superior to using a current
  2389.      time, since it allows RRs with TTLs of zero to be entered in
  2390.      the cache in the usual manner, but still used by the current
  2391.      request, even after intervals of many seconds due to system
  2392.      load, query retransmission timeouts, etc.
  2393.  
  2394.    - Some sort of parameters to limit the amount of work which will
  2395.      be performed for this request.
  2396.  
  2397.      The amount of work which a resolver will do in response to a
  2398.      client request must be limited to guard against errors in the
  2399.      database, such as circular CNAME references, and operational
  2400.      problems, such as network partition which prevents the
  2401.  
  2402.  
  2403.  
  2404. Mockapetris                                                    [Page 43]
  2405.  
  2406. RFC 1035        Domain Implementation and Specification    November 1987
  2407.  
  2408.  
  2409.      resolver from accessing the name servers it needs.  While
  2410.      local limits on the number of times a resolver will retransmit
  2411.      a particular query to a particular name server address are
  2412.      essential, the resolver should have a global per-request
  2413.      counter to limit work on a single request.  The counter should
  2414.      be set to some initial value and decremented whenever the
  2415.      resolver performs any action (retransmission timeout,
  2416.      retransmission, etc.)  If the counter passes zero, the request
  2417.      is terminated with a temporary error.
  2418.  
  2419.      Note that if the resolver structure allows one request to
  2420.      start others in parallel, such as when the need to access a
  2421.      name server for one request causes a parallel resolve for the
  2422.      name server's addresses, the spawned request should be started
  2423.      with a lower counter.  This prevents circular references in
  2424.      the database from starting a chain reaction of resolver
  2425.      activity.
  2426.  
  2427.    - The SLIST data structure discussed in [RFC-1034].
  2428.  
  2429.      This structure keeps track of the state of a request if it
  2430.      must wait for answers from foreign name servers.
  2431.  
  2432. 7.2. Sending the queries
  2433.  
  2434. As described in [RFC-1034], the basic task of the resolver is to
  2435. formulate a query which will answer the client's request and direct that
  2436. query to name servers which can provide the information.  The resolver
  2437. will usually only have very strong hints about which servers to ask, in
  2438. the form of NS RRs, and may have to revise the query, in response to
  2439. CNAMEs, or revise the set of name servers the resolver is asking, in
  2440. response to delegation responses which point the resolver to name
  2441. servers closer to the desired information.  In addition to the
  2442. information requested by the client, the resolver may have to call upon
  2443. its own services to determine the address of name servers it wishes to
  2444. contact.
  2445.  
  2446. In any case, the model used in this memo assumes that the resolver is
  2447. multiplexing attention between multiple requests, some from the client,
  2448. and some internally generated.  Each request is represented by some
  2449. state information, and the desired behavior is that the resolver
  2450. transmit queries to name servers in a way that maximizes the probability
  2451. that the request is answered, minimizes the time that the request takes,
  2452. and avoids excessive transmissions.  The key algorithm uses the state
  2453. information of the request to select the next name server address to
  2454. query, and also computes a timeout which will cause the next action
  2455. should a response not arrive.  The next action will usually be a
  2456. transmission to some other server, but may be a temporary error to the
  2457.  
  2458.  
  2459.  
  2460. Mockapetris                                                    [Page 44]
  2461.  
  2462. RFC 1035        Domain Implementation and Specification    November 1987
  2463.  
  2464.  
  2465. client.
  2466.  
  2467. The resolver always starts with a list of server names to query (SLIST).
  2468. This list will be all NS RRs which correspond to the nearest ancestor
  2469. zone that the resolver knows about.  To avoid startup problems, the
  2470. resolver should have a set of default servers which it will ask should
  2471. it have no current NS RRs which are appropriate.  The resolver then adds
  2472. to SLIST all of the known addresses for the name servers, and may start
  2473. parallel requests to acquire the addresses of the servers when the
  2474. resolver has the name, but no addresses, for the name servers.
  2475.  
  2476. To complete initialization of SLIST, the resolver attaches whatever
  2477. history information it has to the each address in SLIST.  This will
  2478. usually consist of some sort of weighted averages for the response time
  2479. of the address, and the batting average of the address (i.e., how often
  2480. the address responded at all to the request).  Note that this
  2481. information should be kept on a per address basis, rather than on a per
  2482. name server basis, because the response time and batting average of a
  2483. particular server may vary considerably from address to address.  Note
  2484. also that this information is actually specific to a resolver address /
  2485. server address pair, so a resolver with multiple addresses may wish to
  2486. keep separate histories for each of its addresses.  Part of this step
  2487. must deal with addresses which have no such history; in this case an
  2488. expected round trip time of 5-10 seconds should be the worst case, with
  2489. lower estimates for the same local network, etc.
  2490.  
  2491. Note that whenever a delegation is followed, the resolver algorithm
  2492. reinitializes SLIST.
  2493.  
  2494. The information establishes a partial ranking of the available name
  2495. server addresses.  Each time an address is chosen and the state should
  2496. be altered to prevent its selection again until all other addresses have
  2497. been tried.  The timeout for each transmission should be 50-100% greater
  2498. than the average predicted value to allow for variance in response.
  2499.  
  2500. Some fine points:
  2501.  
  2502.    - The resolver may encounter a situation where no addresses are
  2503.      available for any of the name servers named in SLIST, and
  2504.      where the servers in the list are precisely those which would
  2505.      normally be used to look up their own addresses.  This
  2506.      situation typically occurs when the glue address RRs have a
  2507.      smaller TTL than the NS RRs marking delegation, or when the
  2508.      resolver caches the result of a NS search.  The resolver
  2509.      should detect this condition and restart the search at the
  2510.      next ancestor zone, or alternatively at the root.
  2511.  
  2512.  
  2513.  
  2514.  
  2515.  
  2516. Mockapetris                                                    [Page 45]
  2517.  
  2518. RFC 1035        Domain Implementation and Specification    November 1987
  2519.  
  2520.  
  2521.    - If a resolver gets a server error or other bizarre response
  2522.      from a name server, it should remove it from SLIST, and may
  2523.      wish to schedule an immediate transmission to the next
  2524.      candidate server address.
  2525.  
  2526. 7.3. Processing responses
  2527.  
  2528. The first step in processing arriving response datagrams is to parse the
  2529. response.  This procedure should include:
  2530.  
  2531.    - Check the header for reasonableness.  Discard datagrams which
  2532.      are queries when responses are expected.
  2533.  
  2534.    - Parse the sections of the message, and insure that all RRs are
  2535.      correctly formatted.
  2536.  
  2537.    - As an optional step, check the TTLs of arriving data looking
  2538.      for RRs with excessively long TTLs.  If a RR has an
  2539.      excessively long TTL, say greater than 1 week, either discard
  2540.      the whole response, or limit all TTLs in the response to 1
  2541.      week.
  2542.  
  2543. The next step is to match the response to a current resolver request.
  2544. The recommended strategy is to do a preliminary matching using the ID
  2545. field in the domain header, and then to verify that the question section
  2546. corresponds to the information currently desired.  This requires that
  2547. the transmission algorithm devote several bits of the domain ID field to
  2548. a request identifier of some sort.  This step has several fine points:
  2549.  
  2550.    - Some name servers send their responses from different
  2551.      addresses than the one used to receive the query.  That is, a
  2552.      resolver cannot rely that a response will come from the same
  2553.      address which it sent the corresponding query to.  This name
  2554.      server bug is typically encountered in UNIX systems.
  2555.  
  2556.    - If the resolver retransmits a particular request to a name
  2557.      server it should be able to use a response from any of the
  2558.      transmissions.  However, if it is using the response to sample
  2559.      the round trip time to access the name server, it must be able
  2560.      to determine which transmission matches the response (and keep
  2561.      transmission times for each outgoing message), or only
  2562.      calculate round trip times based on initial transmissions.
  2563.  
  2564.    - A name server will occasionally not have a current copy of a
  2565.      zone which it should have according to some NS RRs.  The
  2566.      resolver should simply remove the name server from the current
  2567.      SLIST, and continue.
  2568.  
  2569.  
  2570.  
  2571.  
  2572. Mockapetris                                                    [Page 46]
  2573.  
  2574. RFC 1035        Domain Implementation and Specification    November 1987
  2575.  
  2576.  
  2577. 7.4. Using the cache
  2578.  
  2579. In general, we expect a resolver to cache all data which it receives in
  2580. responses since it may be useful in answering future client requests.
  2581. However, there are several types of data which should not be cached:
  2582.  
  2583.    - When several RRs of the same type are available for a
  2584.      particular owner name, the resolver should either cache them
  2585.      all or none at all.  When a response is truncated, and a
  2586.      resolver doesn't know whether it has a complete set, it should
  2587.      not cache a possibly partial set of RRs.
  2588.  
  2589.    - Cached data should never be used in preference to
  2590.      authoritative data, so if caching would cause this to happen
  2591.      the data should not be cached.
  2592.  
  2593.    - The results of an inverse query should not be cached.
  2594.  
  2595.    - The results of standard queries where the QNAME contains "*"
  2596.      labels if the data might be used to construct wildcards.  The
  2597.      reason is that the cache does not necessarily contain existing
  2598.      RRs or zone boundary information which is necessary to
  2599.      restrict the application of the wildcard RRs.
  2600.  
  2601.    - RR data in responses of dubious reliability.  When a resolver
  2602.      receives unsolicited responses or RR data other than that
  2603.      requested, it should discard it without caching it.  The basic
  2604.      implication is that all sanity checks on a packet should be
  2605.      performed before any of it is cached.
  2606.  
  2607. In a similar vein, when a resolver has a set of RRs for some name in a
  2608. response, and wants to cache the RRs, it should check its cache for
  2609. already existing RRs.  Depending on the circumstances, either the data
  2610. in the response or the cache is preferred, but the two should never be
  2611. combined.  If the data in the response is from authoritative data in the
  2612. answer section, it is always preferred.
  2613.  
  2614. 8. MAIL SUPPORT
  2615.  
  2616. The domain system defines a standard for mapping mailboxes into domain
  2617. names, and two methods for using the mailbox information to derive mail
  2618. routing information.  The first method is called mail exchange binding
  2619. and the other method is mailbox binding.  The mailbox encoding standard
  2620. and mail exchange binding are part of the DNS official protocol, and are
  2621. the recommended method for mail routing in the Internet.  Mailbox
  2622. binding is an experimental feature which is still under development and
  2623. subject to change.
  2624.  
  2625.  
  2626.  
  2627.  
  2628. Mockapetris                                                    [Page 47]
  2629.  
  2630. RFC 1035        Domain Implementation and Specification    November 1987
  2631.  
  2632.  
  2633. The mailbox encoding standard assumes a mailbox name of the form
  2634. "<local-part>@<mail-domain>".  While the syntax allowed in each of these
  2635. sections varies substantially between the various mail internets, the
  2636. preferred syntax for the ARPA Internet is given in [RFC-822].
  2637.  
  2638. The DNS encodes the <local-part> as a single label, and encodes the
  2639. <mail-domain> as a domain name.  The single label from the <local-part>
  2640. is prefaced to the domain name from <mail-domain> to form the domain
  2641. name corresponding to the mailbox.  Thus the mailbox HOSTMASTER@SRI-
  2642. NIC.ARPA is mapped into the domain name HOSTMASTER.SRI-NIC.ARPA.  If the
  2643. <local-part> contains dots or other special characters, its
  2644. representation in a master file will require the use of backslash
  2645. quoting to ensure that the domain name is properly encoded.  For
  2646. example, the mailbox Action.domains@ISI.EDU would be represented as
  2647. Action\.domains.ISI.EDU.
  2648.  
  2649. 8.1. Mail exchange binding
  2650.  
  2651. Mail exchange binding uses the <mail-domain> part of a mailbox
  2652. specification to determine where mail should be sent.  The <local-part>
  2653. is not even consulted.  [RFC-974] specifies this method in detail, and
  2654. should be consulted before attempting to use mail exchange support.
  2655.  
  2656. One of the advantages of this method is that it decouples mail
  2657. destination naming from the hosts used to support mail service, at the
  2658. cost of another layer of indirection in the lookup function.  However,
  2659. the addition layer should eliminate the need for complicated "%", "!",
  2660. etc encodings in <local-part>.
  2661.  
  2662. The essence of the method is that the <mail-domain> is used as a domain
  2663. name to locate type MX RRs which list hosts willing to accept mail for
  2664. <mail-domain>, together with preference values which rank the hosts
  2665. according to an order specified by the administrators for <mail-domain>.
  2666.  
  2667. In this memo, the <mail-domain> ISI.EDU is used in examples, together
  2668. with the hosts VENERA.ISI.EDU and VAXA.ISI.EDU as mail exchanges for
  2669. ISI.EDU.  If a mailer had a message for Mockapetris@ISI.EDU, it would
  2670. route it by looking up MX RRs for ISI.EDU.  The MX RRs at ISI.EDU name
  2671. VENERA.ISI.EDU and VAXA.ISI.EDU, and type A queries can find the host
  2672. addresses.
  2673.  
  2674. 8.2. Mailbox binding (Experimental)
  2675.  
  2676. In mailbox binding, the mailer uses the entire mail destination
  2677. specification to construct a domain name.  The encoded domain name for
  2678. the mailbox is used as the QNAME field in a QTYPE=MAILB query.
  2679.  
  2680. Several outcomes are possible for this query:
  2681.  
  2682.  
  2683.  
  2684. Mockapetris                                                    [Page 48]
  2685.  
  2686. RFC 1035        Domain Implementation and Specification    November 1987
  2687.  
  2688.  
  2689.    1. The query can return a name error indicating that the mailbox
  2690.       does not exist as a domain name.
  2691.  
  2692.       In the long term, this would indicate that the specified
  2693.       mailbox doesn't exist.  However, until the use of mailbox
  2694.       binding is universal, this error condition should be
  2695.       interpreted to mean that the organization identified by the
  2696.       global part does not support mailbox binding.  The
  2697.       appropriate procedure is to revert to exchange binding at
  2698.       this point.
  2699.  
  2700.    2. The query can return a Mail Rename (MR) RR.
  2701.  
  2702.       The MR RR carries new mailbox specification in its RDATA
  2703.       field.  The mailer should replace the old mailbox with the
  2704.       new one and retry the operation.
  2705.  
  2706.    3. The query can return a MB RR.
  2707.  
  2708.       The MB RR carries a domain name for a host in its RDATA
  2709.       field.  The mailer should deliver the message to that host
  2710.       via whatever protocol is applicable, e.g., b,SMTP.
  2711.  
  2712.    4. The query can return one or more Mail Group (MG) RRs.
  2713.  
  2714.       This condition means that the mailbox was actually a mailing
  2715.       list or mail group, rather than a single mailbox.  Each MG RR
  2716.       has a RDATA field that identifies a mailbox that is a member
  2717.       of the group.  The mailer should deliver a copy of the
  2718.       message to each member.
  2719.  
  2720.    5. The query can return a MB RR as well as one or more MG RRs.
  2721.  
  2722.       This condition means the the mailbox was actually a mailing
  2723.       list.  The mailer can either deliver the message to the host
  2724.       specified by the MB RR, which will in turn do the delivery to
  2725.       all members, or the mailer can use the MG RRs to do the
  2726.       expansion itself.
  2727.  
  2728. In any of these cases, the response may include a Mail Information
  2729. (MINFO) RR.  This RR is usually associated with a mail group, but is
  2730. legal with a MB.  The MINFO RR identifies two mailboxes.  One of these
  2731. identifies a responsible person for the original mailbox name.  This
  2732. mailbox should be used for requests to be added to a mail group, etc.
  2733. The second mailbox name in the MINFO RR identifies a mailbox that should
  2734. receive error messages for mail failures.  This is particularly
  2735. appropriate for mailing lists when errors in member names should be
  2736. reported to a person other than the one who sends a message to the list.
  2737.  
  2738.  
  2739.  
  2740. Mockapetris                                                    [Page 49]
  2741.  
  2742. RFC 1035        Domain Implementation and Specification    November 1987
  2743.  
  2744.  
  2745. New fields may be added to this RR in the future.
  2746.  
  2747.  
  2748. 9. REFERENCES and BIBLIOGRAPHY
  2749.  
  2750. [Dyer 87]       S. Dyer, F. Hsu, "Hesiod", Project Athena
  2751.                 Technical Plan - Name Service, April 1987, version 1.9.
  2752.  
  2753.                 Describes the fundamentals of the Hesiod name service.
  2754.  
  2755. [IEN-116]       J. Postel, "Internet Name Server", IEN-116,
  2756.                 USC/Information Sciences Institute, August 1979.
  2757.  
  2758.                 A name service obsoleted by the Domain Name System, but
  2759.                 still in use.
  2760.  
  2761. [Quarterman 86] J. Quarterman, and J. Hoskins, "Notable Computer Networks",
  2762.                 Communications of the ACM, October 1986, volume 29, number
  2763.                 10.
  2764.  
  2765. [RFC-742]       K. Harrenstien, "NAME/FINGER", RFC-742, Network
  2766.                 Information Center, SRI International, December 1977.
  2767.  
  2768. [RFC-768]       J. Postel, "User Datagram Protocol", RFC-768,
  2769.                 USC/Information Sciences Institute, August 1980.
  2770.  
  2771. [RFC-793]       J. Postel, "Transmission Control Protocol", RFC-793,
  2772.                 USC/Information Sciences Institute, September 1981.
  2773.  
  2774. [RFC-799]       D. Mills, "Internet Name Domains", RFC-799, COMSAT,
  2775.                 September 1981.
  2776.  
  2777.                 Suggests introduction of a hierarchy in place of a flat
  2778.                 name space for the Internet.
  2779.  
  2780. [RFC-805]       J. Postel, "Computer Mail Meeting Notes", RFC-805,
  2781.                 USC/Information Sciences Institute, February 1982.
  2782.  
  2783. [RFC-810]       E. Feinler, K. Harrenstien, Z. Su, and V. White, "DOD
  2784.                 Internet Host Table Specification", RFC-810, Network
  2785.                 Information Center, SRI International, March 1982.
  2786.  
  2787.                 Obsolete.  See RFC-952.
  2788.  
  2789. [RFC-811]       K. Harrenstien, V. White, and E. Feinler, "Hostnames
  2790.                 Server", RFC-811, Network Information Center, SRI
  2791.                 International, March 1982.
  2792.  
  2793.  
  2794.  
  2795.  
  2796. Mockapetris                                                    [Page 50]
  2797.  
  2798. RFC 1035        Domain Implementation and Specification    November 1987
  2799.  
  2800.  
  2801.                 Obsolete.  See RFC-953.
  2802.  
  2803. [RFC-812]       K. Harrenstien, and V. White, "NICNAME/WHOIS", RFC-812,
  2804.                 Network Information Center, SRI International, March
  2805.                 1982.
  2806.  
  2807. [RFC-819]       Z. Su, and J. Postel, "The Domain Naming Convention for
  2808.                 Internet User Applications", RFC-819, Network
  2809.                 Information Center, SRI International, August 1982.
  2810.  
  2811.                 Early thoughts on the design of the domain system.
  2812.                 Current implementation is completely different.
  2813.  
  2814. [RFC-821]       J. Postel, "Simple Mail Transfer Protocol", RFC-821,
  2815.                 USC/Information Sciences Institute, August 1980.
  2816.  
  2817. [RFC-830]       Z. Su, "A Distributed System for Internet Name Service",
  2818.                 RFC-830, Network Information Center, SRI International,
  2819.                 October 1982.
  2820.  
  2821.                 Early thoughts on the design of the domain system.
  2822.                 Current implementation is completely different.
  2823.  
  2824. [RFC-882]       P. Mockapetris, "Domain names - Concepts and
  2825.                 Facilities," RFC-882, USC/Information Sciences
  2826.                 Institute, November 1983.
  2827.  
  2828.                 Superceeded by this memo.
  2829.  
  2830. [RFC-883]       P. Mockapetris, "Domain names - Implementation and
  2831.                 Specification," RFC-883, USC/Information Sciences
  2832.                 Institute, November 1983.
  2833.  
  2834.                 Superceeded by this memo.
  2835.  
  2836. [RFC-920]       J. Postel and J. Reynolds, "Domain Requirements",
  2837.                 RFC-920, USC/Information Sciences Institute,
  2838.                 October 1984.
  2839.  
  2840.                 Explains the naming scheme for top level domains.
  2841.  
  2842. [RFC-952]       K. Harrenstien, M. Stahl, E. Feinler, "DoD Internet Host
  2843.                 Table Specification", RFC-952, SRI, October 1985.
  2844.  
  2845.                 Specifies the format of HOSTS.TXT, the host/address
  2846.                 table replaced by the DNS.
  2847.  
  2848.  
  2849.  
  2850.  
  2851.  
  2852. Mockapetris                                                    [Page 51]
  2853.  
  2854. RFC 1035        Domain Implementation and Specification    November 1987
  2855.  
  2856.  
  2857. [RFC-953]       K. Harrenstien, M. Stahl, E. Feinler, "HOSTNAME Server",
  2858.                 RFC-953, SRI, October 1985.
  2859.  
  2860.                 This RFC contains the official specification of the
  2861.                 hostname server protocol, which is obsoleted by the DNS.
  2862.                 This TCP based protocol accesses information stored in
  2863.                 the RFC-952 format, and is used to obtain copies of the
  2864.                 host table.
  2865.  
  2866. [RFC-973]       P. Mockapetris, "Domain System Changes and
  2867.                 Observations", RFC-973, USC/Information Sciences
  2868.                 Institute, January 1986.
  2869.  
  2870.                 Describes changes to RFC-882 and RFC-883 and reasons for
  2871.                 them.
  2872.  
  2873. [RFC-974]       C. Partridge, "Mail routing and the domain system",
  2874.                 RFC-974, CSNET CIC BBN Labs, January 1986.
  2875.  
  2876.                 Describes the transition from HOSTS.TXT based mail
  2877.                 addressing to the more powerful MX system used with the
  2878.                 domain system.
  2879.  
  2880. [RFC-1001]      NetBIOS Working Group, "Protocol standard for a NetBIOS
  2881.                 service on a TCP/UDP transport: Concepts and Methods",
  2882.                 RFC-1001, March 1987.
  2883.  
  2884.                 This RFC and RFC-1002 are a preliminary design for
  2885.                 NETBIOS on top of TCP/IP which proposes to base NetBIOS
  2886.                 name service on top of the DNS.
  2887.  
  2888. [RFC-1002]      NetBIOS Working Group, "Protocol standard for a NetBIOS
  2889.                 service on a TCP/UDP transport: Detailed
  2890.                 Specifications", RFC-1002, March 1987.
  2891.  
  2892. [RFC-1010]      J. Reynolds, and J. Postel, "Assigned Numbers", RFC-1010,
  2893.                 USC/Information Sciences Institute, May 1987.
  2894.  
  2895.                 Contains socket numbers and mnemonics for host names,
  2896.                 operating systems, etc.
  2897.  
  2898. [RFC-1031]      W. Lazear, "MILNET Name Domain Transition", RFC-1031,
  2899.                 November 1987.
  2900.  
  2901.                 Describes a plan for converting the MILNET to the DNS.
  2902.  
  2903. [RFC-1032]      M. Stahl, "Establishing a Domain - Guidelines for
  2904.                 Administrators", RFC-1032, November 1987.
  2905.  
  2906.  
  2907.  
  2908. Mockapetris                                                    [Page 52]
  2909.  
  2910. RFC 1035        Domain Implementation and Specification    November 1987
  2911.  
  2912.  
  2913.                 Describes the registration policies used by the NIC to
  2914.                 administer the top level domains and delegate subzones.
  2915.  
  2916. [RFC-1033]      M. Lottor, "Domain Administrators Operations Guide",
  2917.                 RFC-1033, November 1987.
  2918.  
  2919.                 A cookbook for domain administrators.
  2920.  
  2921. [Solomon 82]    M. Solomon, L. Landweber, and D. Neuhengen, "The CSNET
  2922.                 Name Server", Computer Networks, vol 6, nr 3, July 1982.
  2923.  
  2924.                 Describes a name service for CSNET which is independent
  2925.                 from the DNS and DNS use in the CSNET.
  2926.  
  2927.  
  2928.  
  2929.  
  2930.  
  2931.  
  2932.  
  2933.  
  2934.  
  2935.  
  2936.  
  2937.  
  2938.  
  2939.  
  2940.  
  2941.  
  2942.  
  2943.  
  2944.  
  2945.  
  2946.  
  2947.  
  2948.  
  2949.  
  2950.  
  2951.  
  2952.  
  2953.  
  2954.  
  2955.  
  2956.  
  2957.  
  2958.  
  2959.  
  2960.  
  2961.  
  2962.  
  2963.  
  2964. Mockapetris                                                    [Page 53]
  2965.  
  2966. RFC 1035        Domain Implementation and Specification    November 1987
  2967.  
  2968.  
  2969. Index
  2970.  
  2971.           *   13
  2972.  
  2973.           ;   33, 35
  2974.  
  2975.           <character-string>   35
  2976.           <domain-name>   34
  2977.  
  2978.           @   35
  2979.  
  2980.           \   35
  2981.  
  2982.           A   12
  2983.  
  2984.           Byte order   8
  2985.  
  2986.           CH   13
  2987.           Character case   9
  2988.           CLASS   11
  2989.           CNAME   12
  2990.           Completion   42
  2991.           CS   13
  2992.  
  2993.           Hesiod   13
  2994.           HINFO   12
  2995.           HS   13
  2996.  
  2997.           IN   13
  2998.           IN-ADDR.ARPA domain   22
  2999.           Inverse queries   40
  3000.  
  3001.           Mailbox names   47
  3002.           MB   12
  3003.           MD   12
  3004.           MF   12
  3005.           MG   12
  3006.           MINFO   12
  3007.           MINIMUM   20
  3008.           MR   12
  3009.           MX   12
  3010.  
  3011.           NS   12
  3012.           NULL   12
  3013.  
  3014.           Port numbers   32
  3015.           Primary server   5
  3016.           PTR   12, 18
  3017.  
  3018.  
  3019.  
  3020. Mockapetris                                                    [Page 54]
  3021.  
  3022. RFC 1035        Domain Implementation and Specification    November 1987
  3023.  
  3024.  
  3025.           QCLASS   13
  3026.           QTYPE   12
  3027.  
  3028.           RDATA   12
  3029.           RDLENGTH  11
  3030.  
  3031.           Secondary server   5
  3032.           SOA   12
  3033.           Stub resolvers   7
  3034.  
  3035.           TCP   32
  3036.           TXT   12
  3037.           TYPE   11
  3038.  
  3039.           UDP   32
  3040.  
  3041.           WKS   12
  3042.  
  3043.  
  3044.  
  3045.  
  3046.  
  3047.  
  3048.  
  3049.  
  3050.  
  3051.  
  3052.  
  3053.  
  3054.  
  3055.  
  3056.  
  3057.  
  3058.  
  3059.  
  3060.  
  3061.  
  3062.  
  3063.  
  3064.  
  3065.  
  3066.  
  3067.  
  3068.  
  3069.  
  3070.  
  3071.  
  3072.  
  3073.  
  3074.  
  3075.  
  3076. Mockapetris                                                    [Page 55]
  3077.  
  3078.